基本信息

内容简介
计算机书籍
《软件过程与管理》的目的是让学生学会将优秀管理方法和适用的具体开发技术有机地结合起来,并掌握如何应用过程化思想和系统化方法开发和维护各类软件系统。全书分为三个部分:第一部分主要介绍软件开发者个体在过程方法和自我管理上应当掌握的技能;第二部分关注团队软件过程,分别从工程化开发、项目管理和团队动力学角度阐述了软件开发应当关注的内容;第三部分则基于IDEAL通用软件过程改进方法,阐述了组织级过程改进的实施方法。通过软件开发环境中三个不同层次(个体、团队以及组织)的过程方法的描述,让学生学会如何系统地满足不断变化的软件产品开发的需要。
《软件过程与管理》可作为计算机与软件工程类专业的高年级本科生和硕士研究生相关课程的教材。
目录
软件工程教材序
前言
第1章 概述 1
1.1 软件质量与软件过程 1
1.1.1 从焦油坑谈起 1
1.1.2 传统行业质量管理 2
1.1.3 软件行业质量管理 7
1.2 软件过程发展简史 8
1.2.1 20世纪50年代的软件工程 8
1.2.2 20世纪60年代的软件工艺 9
1.2.3 20世纪70年代的形式化方法与瀑布过程 10
1.2.4 20世纪80年代的生产率与可伸缩性 12
1.2.5 20世纪90年代的并发过程与顺序过程 15
1.2.6 2000年之后的敏捷方法与基于价值的方法 16
1.3 经典软件过程和实践 17
1.3.1 PSP/TSP 17
1.3.2 CMM/CMMI 19
1.3.3 RUP 23
1.3.4 敏捷过程与极限编程 26
前言
事实上,本书在内容组织上一直试图尽最大可能实现上述两方面的目标。为此,全书在设计上首要特色是通过三大部分体现出内容的有机组合。第一部分主要介绍作为软件开发者个体而言,在过程方法和自我管理上应当掌握的技能。具体包括个人级项目估算和计划、进度跟踪、过程度量和改进、质量计划、质量管理以及各种适用于个人级开发的设计方法和设计验证方法等。第二部分关注团队软件过程,从工程化开发的角度、项目管理的角度和团队动力学角度分别阐述了典型团队形式软件开发应当关注的内容。第三部分则基于IDEAL通用软件过程改进方法,阐述了组织级软件过程改进的实施方法。通过一个典型例子,分别解释了在IDEAL中初始、诊断、建立、执行和调整各个阶段的主要活动。这三部分内容,分别对应在一个典型软件开发环境中的过程方法必须要考虑的三个不同层次(软件工程师个体、团队以及组织),从而更加系统地满足不断变化的软件产品开发的需要。
本书的第二个特色是将软件过程改进和项目管理两个概念有机结合,穿插体现在本书的三大部分之中。软件过程改进需要管理软件开发的最佳实践,主要发生在个体、团队和组织三个不同层次;而软件项目管理则以实现特定项目目标为努力的方向,主要发生在个体和团队两个层次上。这两者既有本质上的差别,又相互依存、不可分割。因此,在教材内容的编排上,我们做了有针对性的设计。在个体级过程方法上,通过具体的管理技术体现出项目管理的实践,而在阐述过程度量和质量管理技术的时候,又反复强调了这些度量结果对于个体级过程改进的意义;在团队级过程方法上,整体体现出一个项目管理的完整周期,但是,又以完整一章的内容阐述项目级的总结,这事实上是为了支持项目小组级的过程改进;在组织级,由于项目管理很少发生在组织级,所以主要阐述过程改进的相关实践。这样设计有一个很大的好处,即不管为了学习项目管理,还是为了学习过程改进,都能够在书中借鉴到可以在实际工作环境中操作的方法。
本书的第三个特色体现在规范过程和敏捷过程的侧重选择上。不管在学术界还是工业界,规范过程和敏捷过程之间的争论一直都存在。目前主流的观点是这两种方法不是根本对立的,平衡和融合各有优势的两种方法往往能更好地满足实际的软件项目环境。然而,借鉴中国传统书法学习过程,我们有理由相信,先学习规范过程,再学习敏捷过程是一个合理的选择。因此,作为专业教材,本书在内容安排上主要以介绍规范过程方法为主。但是,在第1章给出了敏捷过程的介绍,在附录中给出了平衡敏捷和规范过程的一些工作思路。教师在讲解本书各章内容的时候,也应当注意适当解释一些敏捷思想与各章内容之间相互补充的非对立的内容。
本书可作为计算机与软件工程类专业的高年级本科生和硕士研究生相关课程的教材。建议教学课时数为40。本书自2010年秋季学期开始在南京大学软件学院试用,作者也根据试用期间的反馈情况对教材做了修改。
“软件过程与管理”是南京大学软件学院重点建设的课程,并入选2008年教育部–IBM精品课程,在教学过程中得到了学院的大力支持,在此表示衷心感谢。本书由南京大学骆斌教授整体策划和指导。本书第1章由荣国平和葛季栋合作完成,第2~10章由荣国平编写,第11~15章以及附录部分由葛季栋编写。限于编者的水平,书中难免有错误与不妥之处,恳请读者指正和赐教。作者的电子邮件地址为:luobin@nju.edu.cn、ronggp@software.nju.edu.cn和gjd@software.nju.edu.cn。
作者
2012年9月
南京大学北园
序言
国际软件工程学科教程CC-SE2004建议,软件工程专业教学计划的技术课程包括初级课程、中级课程、高级课程和领域相关课程。
初级课程。包括离散数学、数据结构与算法两门公共课程,另三门课程可以组织成计算机科学优先方案(程序设计基础、面向对象方法、软件工程导论)和软件工程优先方案(软件工程与计算概论/软件工程与计算Ⅱ/软件工程与计算Ⅲ)。
中级课程。覆盖计算机硬件、操作系统、网络、数据库以及其他必备的计算机硬件与计算机系统基本知识,课程总数与计算机科学专业相比应大幅度缩减。
高级课程。六门课程,覆盖软件需求、体系结构、设计、构造、测试、质量、过程、管理和人机交互等。
领域相关课程。与具体应用领域相关的选修课程,所有学校应结合办学特色开设。
CC-SE2004的实践难点在于:如何把计算机专业的一门软件工程课程按照教学目标有效拆分成初级课程和六门高级课程?如何裁剪与求精计算机硬件与系统课程?如何在专业教学初期引入软件工程观念,并将其在教学中与程序设计、软件职业、团队交流沟通相结合?
南京大学一直致力于基于CC-SE2004规范的软件工程教学实践与创新,在专业教学早期注重培养学生的软件工程观与计算机系统观,按照软件系统由小及大的线索从一年级开始组织软件工程类课程。具体做法是:在求精计算机硬件与系统课程的基础上,融合软件工程基础、程序设计、职业团队等知识实践的“软件工程与计算”系列课程,通过案例教授中小规模软件系统构建;围绕大中型软件系统构建知识分领域组织软件工程高级课程;围绕软件工程应用领域建设领域相关课程。南京大学的“软件工程与计算”、“计算系统基础”和“操作系统”是国家级精品课程,“软件需求工程”、“软件过程与管理”是教育部–IBM精品课程,软件工程专业工程化实践教学体系和人才培养体系分别获得第五届与第六届高等教育国家级教学成果奖。
此次集中出版的五本教材是软件工程专业课程建设工作的第二波,包括《软件工程与计算卷》的全部三分册(《软件开发的编程基础》、《软件开发的技术基础》、《团队与软件开发实践》)和《软件工程高级技术卷》的《人机交互—软件工程视角》与《软件过程与管理》。其中《软件工程与计算卷》围绕个人小规模软件系统、小组中小规模软件系统和模拟团队级中规模软件产品构建实践了CC-SE2004软件工程优先的基础课程方案;《人机交互—软件工程视角》是为数不多的“人机交互的软件工程方法”教材;《软件过程与管理》则结合了个人级、小组级、组织级的软件过程。这五本教材在教学内容组织上立意较新,在国际国内可供参考的同类教科书很少,代表了我们对软件工程专业新课程教学的理解与探索,因此难免存在瑕疵与谬误,欢迎各位读者批评指正。
本教材系列得到教育部“质量工程”之软件工程主干课程国家级教学团队、软件工程国家级特色专业、软件工程国家级人才培养模式创新实验区、教育部“十二五本科教学工程”之软件工程国家级专业综合教学改革试点、软件工程国家级工程实践教育基地、计算机科学与软件工程国家级实验教学示范中心,以及南京大学985项目和有关出版社的支持。在本教材系列的建设过程中,南京大学的张大良先生、陈道蓄先生、李宣东教授、赵志宏教授,以及国防科学技术大学、清华大学、中国科学院软件所、北京航空航天大学、浙江大学、上海交通大学、复旦大学的一些软件工程教育专家给出了大量宝贵意见。特此鸣谢!
南京大学软件学院
2012年10月