软件工程方法与实践(第2版)
作者 : 窦万峰,杨坤,许敏,缪静娴,钱辰
出版日期 : 2013-07-25
ISBN : 978-7-111-40696-9
定价 : 39.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 317
开本 : 16
原书名 :
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本书分别从传统的结构化软件开发范型和面向对象软件开发范型两个方面,把软件工程的理论与方法融入到开发实践当中,通过丰富的案例分析与设计,深入地介绍软件开发中各个阶段的技术、方法和管理过程。本书分四个部分介绍了软件工程的基本概念、软件过程和软件过程模型,结构化分析与设计和面向对象分析与设计的基本概念、分析与设计过程、分析与设计模型以及相关技术与方法,以及软件测试原理与技术、维护策略与方法、软件项目管理等内容,是一本全面介绍软件开发的“工程化”思想的理想教材。
本书适合作为高等院校软件工程课程的教材,既适用于计算机专业的学生,也适用于其他非计算机专业的学生以及从事软件开发与应用和管理的技术人员,同时也适合专业软件开发人员参考。

图书特色

软件工程是一门理论与实践相结合的学科,注重通过实践来理解理论、原理和方法。本书作者结合多年的软件工程教学和项目开发经验,通过多个实际项目案例,从不同的角度和范型循序渐进地介绍了软件开发过程中所涉及的原理、方法与技术。
本书特点
对比介绍传统的结构化分析与设计和面向对象分析与设计,有利于学生理解不同的软件开发范型的特点和适用情况。
通过实际案例介绍软件工程的原理和方法,帮助学生树立软件开发的“工程化”思想。
注重本科生的研究性教学实践,安排了敏捷开发实践的结对编程内容,让学生理解结对编程思想的同时,从研究性的角度提出问题和解决问题,从而达到研究性教学的目的。
采用先结构化后面向对象的讲解路线,便于学生逐步接受软件开发的思想和本质,尤其适合尚未接触软件工程概念的学生。

图书前言

软件工程包含了一系列原理、方法和实践,它将计算机科学理论与现代工程方法论相结合,着重研究软件过程及其模型、分析与设计方法、软件工程开发与管理技术,是指导人们进行正确的软件生产和管理的一门新兴的、综合性的应用科学。软件开发强调从工程化的原理出发,按照标准化规程和软件开发实践来引导软件开发人员进行软件开发,并进行过程改进,促进软件企业向标准化和成熟化发展。软件工程是一门理论与实践相结合的学科,注重通过实践来理解理论、原理与方法。为此,本书结合多年的软件工程教学和项目开发经验,通过项目实例,从不同的角度和范型循序渐进地介绍软件开发过程中所涉及的原理、方法与技术。
  全书分为四个部分:
  第一部分:软件工程基础。这一部分共安排了3章内容,初步介绍软件工程的基本概念、软件过程和软件过程模型等。
  第二部分:结构化分析与设计。这一部分共安排了5章内容,介绍结构化分析与设计的基本概念、分析与设计过程、分析与设计模型,以及相关技术与方法,包括需求分析、结构化分析方法、结构化设计概念、结构化概要设计和结构化详细设计的内容。本部分用案例进一步深化结构化分析与设计的原理、方法及过程。
  第三部分:面向对象分析与设计。这一部分安排了3章内容,介绍面向对象分析与设计的基本概念、用例分析模型与设计过程、面向对象分析与设计模型,以及相关技术与方法,包括用例需求描述、面向对象分析方法和面向对象设计等内容。
  第四部分:软件测试、维护与管理。这一部分安排了3章内容,主要介绍软件测试原理与技术、维护策略与方法、软件项目管理概念与原理、软件成本估算、项目计划与管理,包括软件测试策略、测试基本技术、测试用例设计、软件维护类型、结构化维护过程、项目管理过程和任务、项目管理的范围、软件项目成本估算方法、项目计划安排、软件配置管理、风险管理等内容。
本书的编写思想
  — 对比介绍传统的结构化开发方法和面向对象开发方法,有利于学生理解不同的软件开发范型的特点和适用情况,适合作为教材使用。
  — 注重软件分析与设计的思想介绍,通过案例分析让学生理解这些思想和原理。
  — 加强了研究性教学方法。本书以敏捷开发实践“结对编程”为内容,让学生学习结对编程的原理,并通过上机结对实验活动来理解结对的过程,进而提出开发结对编程系统的需求。学期项目也可以完成结对编程的设计与开发及测试。
本书的结构体系和内容特点
  — 分为软件工程原理、结构化分析与设计、面向对象分析与设计、软件测试与维护和管理四个方面。
  — 针对每一个方面分别介绍软件分析与设计的过程、原理、方法和案例。
  — 案例分析注重解析与思考原理和实现过程。
内容特点
  — 将结构化软件分析与设计、面向对象分析与设计分开来讲,并选择较为适合的案例来帮助理解两个范型的特点和方法,避免学生产生概念混淆和方法上的混乱。
  — 结构化软件分析与设计部分,介绍结构化开发的过程、原理、思想,这些都可以推广到面向对象的分析与设计过程中。通过一个需求稳定的案例介绍传统结构化开发的基本方法和做法。
  — 针对面向对象软件分析与设计,注重面向对象分析模型和设计模型的构建,强调它们的直接关系,抓住面向对象模型开发的要点,通过UML来描述分析和设计过程,通过复杂的系统案例分析来理解面向对象分析与设计的思想。
  — 注重本科生研究性教学实践,在内容上安排了敏捷实践的结对编程的内容,让学生理解结对编程思想的同时,分析存在的问题和解决方法,结合结对编程系统地分析该软件系统的需求,并进行设计、实现及测试。从研究性的角度提出问题和解决问题,从而达到研究性教学的目的。
  — 全书先结构化后面向对象的讲解路线,便于学生逐步接受软件工程的开发思想,尤其适合没有任何开发概念的学生(未接触过软件工程概念的学生)。
本书的案例
  本书介绍传统的结构化范型和面向对象范型两大体系,因此会选择适合不同范型中具有代表性的案例进行讲解,以便读者能够深入理解这两大范型各自的优势。本书的案例既有简单常见的应用系统,如面对面结对编程系统和ATM系统;也有比较实用的系统,如POS机系统;还有一些稍微复杂的系统,如分布式结对编程系统。本书之所以选择这些案例进行讲解,是因为许多人都熟悉这些问题,并且其中蕴涵的分析和设计问题具有普遍性。这些系统由简单到复杂,循序渐进,引导读者逐步理解系统的开发过程和关键问题。
  面对面结对编程系统是一个辅助实现学生在实验室或公司进行结对编程和学习的系统,它克服了面对面结对编程存在的一些不便,如交换位置、相互的干扰等,支持角色交换、信息统计和相容性分析等功能。同时,该系统采用一台主机支持结对,还具有节约实验室建设费用等优点。
  POS机系统是电子收款机系统的简称,它通过计算机处理销售和支付,记录销售信息。该系统包括计算机终端、条码扫描仪、现金抽屉、票据打印机等硬件,使系统运转的软件,以及为不同服务的应用程序提供的接口。收银员通过条码扫描仪读取(或键盘输入)商品的条码号来记录商品信息,系统自动计算销售的总价。收银员能够通过系统处理支付,包括现金支付、信用卡支付和支票支付。经理通过系统能处理顾客退货。
  ATM系统即自动柜员机系统,能够自动处理银行储户的各种业务,如取款、存款、转账、查询、修改密码等。开发一个ATM软件系统,使客户能够直接访问银行计算机,完成交易而无需银行工作人员的介入。
  分布式结对编程支持跨地域进行结对编程或学习。为了支持异地结对者能够像本地面对面结对那样自然地工作,系统通过文本、音频和视频进行交流。系统与集成开发环境进行集成,与源代码编辑器集成,包括VC++、Eclipse等。系统支持角色交换。结对编程的程序员通常不严格遵循“驾驭者”和“导航员”的角色,所以分布式结对编程的工具应该允许合作者很容易地访问控制键盘。
  本书内容翔实,并提供多个较为完整的案例,便于读者学习和深入体会软件分析与设计的原理与方法。不同的案例充分体现了不同的技术,因此有不同的案例介绍和分析层次,主要是突出方法的实用性。本书第1~3章由窦万峰和李东振编写,第4~6章由窦万峰和史玉梅编写,第7~8章由窦万峰和钱辰编写,第9~10章由窦万峰和许敏编写,第11章由杨坤编写,第12~14章由窦万峰和缪静娴编写。全书由窦万峰统稿、校对。
  本书适合作为高等院校软件工程和软件分析与设计课程的教材,既适用于计算机专业的学生,也适用于其他非计算机专业的学生和从事软件开发与应用的技术人员。
  由于作者水平有限,书中难免有疏漏之处,恳请各位读者指正。尤其是案例的详细程度和方案的多样性,请读者给予意见,以便以后改进和完善。

上架指导

计算机\软件工程

封底文字

软件工程是一门理论与实践相结合的学科,注重通过实践来理解理论、原理和方法。本书作者结合多年的软件工程教学和项目开发经验,通过5个实际项目案例,从不同的角度和范型循序渐进地介绍了软件开发过程中所涉及的原理、方法与技术。
本书特点
● 对比介绍传统的结构化分析与设计和面向对象分析与设计,有利于学生理解不同的软件开发范型的特点和适用情况。
● 通过实际案例介绍软件工程的原理和方法,帮助学生树立软件开发“工程化”的思想。
● 注重本科生研究性教学实践,内容上安排了敏捷开发实践的结对编程内容,让学生理解结对编程思想的同时,从研究性的角度提出问题和解决问题,从而达到研究性教学的目的。
● 采用先结构化后面向对象的讲解路线,便于学生逐步接受软件开发的思想和本质,尤其是尚未接触软件工程概念的学生更为适合。

作者简介

窦万峰:暂无

杨坤:暂无

许敏:暂无

缪静娴:暂无

钱辰:暂无

图书目录

前言
 本书的编写思想
 本书的结构体系和内容特点
 内容特点
 本书的案例
第一部分 软件工程基础
 第1章 软件工程概述
  1.1 关于软件
   1.1.1 软件的定义与特性
   1.1.2 软件技术演化
   1.1.3 软件发展趋势
  1.2 关于软件工程
   1.2.1 软件危机
   1.2.2 软件危机的解决途径
   1.2.3 软件工程的概念
  1.3 软件工程原理与原则
   1.3.1 基本原理
   1.3.2 基本原则
  1.4 软件工程开发范型
   1.4.1 结构化开发范型
   1.4.2 面向对象开发范型
   1.4.3 重型软件工程与轻型软件工程
  1.5 软件工程活动
  1.6 小结
  习题
 第2章 软件过程
  2.1 关于软件过程
   2.1.1 软件过程框架
   2.1.2 软件过程模型
  2.2 软件过程技术
   2.2.1 产品与过程
   2.2.2 过程评估
   2.2.3 个人软件过程
   2.2.4 团队软件过程
  2.3 CMM能力成熟度模型
   2.3.1 什么是能力成熟度模型
   2.3.2 CMM的5级模型
   2.3.3 能力成熟度模型集成
  2.4 敏捷软件开发过程
   2.4.1 敏捷过程
   2.4.2 敏捷开发原则
  2.5 极限编程
   2.5.1 关于极限编程
   2.5.2 极限编程的精髓
  2.6 结对编程
   2.6.1 什么是结对编程
   2.6.2 结对编程分析
   2.6.3 结对编程方法
  2.7 小结
  习题
 第3章 软件过程模型
  3.1 软件生存周期
  3.2 瀑布模型
  3.3 增量模型
  3.4 螺旋模型
  3.5 构件集成模型
  3.6 形式化方法模型
  3.7 统一过程模型
  3.8 小结
  习题
第二部分 结构化分析与设计
 第4章 软件需求分析
  4.1 什么是软件需求
  4.2 软件需求分析过程
  4.3 会谈技术
   4.3.1 非正式会谈
   4.3.2 正式会谈
  4.4 调查表技术
   4.4.1 确定调查内容
   4.4.2 可靠可信分析
  4.5 场景分析
  4.6 小结
  习题
 第5章 结构化分析与建模
  5.1 结构化分析概述
  5.2 结构化分析模型
  5.3 面向数据流的建模方法
   5.3.1 数据流建模
   5.3.2 面对面结对编程系统分析
  5.4 面向数据的建模方法
   5.4.1 数据建模
   5.4.2 面对面结对编程系统实体关系图
  5.5 状态机建模方法
   5.5.1 状态机建模
   5.5.2 电梯控制系统分析
  5.6 结构化分析步骤
  5.7 需求规格说明文档编写示例
   5.7.1 引言
   5.7.2 任务概述
   5.7.3 数据描述
   5.7.4 功能需求
   5.7.5 性能需求
   5.7.6 运行需求
   5.7.7 其他需求
  5.8 小结
  习题
 第6章 结构化软件设计基础
  6.1 软件设计过程
   6.1.1 概要设计
   6.1.2 详细设计
  6.2 模块化设计原理
   6.2.1 分解
   6.2.2 抽象
   6.2.3 信息隐蔽
   6.2.4 逐步求精
   6.2.5 模块独立性
  6.3 模块独立性度量
   6.3.1 模块内聚性
   6.3.2 模块耦合性
  6.4 软件总体结构描述
   6.4.1 软件结构图
   6.4.2 软件结构优化
  6.5 小结
  习题
 第7章 结构化概要设计
  7.1 数据流模型
   7.1.1 变换流
   7.1.2 事务流
   7.1.3 混合流
  7.2 面向数据流的设计方法
  7.3 变换流设计
   7.3.1 变换流设计方法
   7.3.2 统计文件单词数程序
  7.4 事务流设计
   7.4.1 事务流设计方法
   7.4.2 自动柜员机业务
  7.5 混合流设计
  7.6 面向数据的JSD设计方法
   7.6.1 数据结构的表示
   7.6.2 面向数据的设计过程
   7.6.3 信用卡记账系统分析
  7.7 接口设计
  7.8 概要设计规格说明文档编写示例
   7.8.1 引言
   7.8.2 数据设计
   7.8.3 体系结构设计
   7.8.4 界面设计
   7.8.5 接口设计
   7.8.6 需求交叉索引
   7.8.7 测试部分
  7.9 小结
  习题
 第8章 结构化详细设计
  8.1 详细设计的基本任务
  8.2 结构化程序的控制结构
  8.3 结构化详细设计工具
   8.3.1 程序流程图
   8.3.2 盒图
   8.3.3 PAD图
   8.3.4 HIPO图
   8.3.5 判定表与判定树
   8.3.6 过程描述语言
  8.4 人机交互界面设计
   8.4.1 界面分析
   8.4.2 界面设计步骤
   8.4.3 界面设计指南
   8.4.4 CAD系统界面设计
  8.5 数据库设计
  8.6 编码实现
   8.6.1 编码语言
   8.6.2 编码风格
  8.7 详细设计规格说明文档编写示例
   8.7.1 引言
   8.7.2 总体设计
   8.7.3 程序描述
  8.8 面对面结对编程系统的部分代码
   8.8.1 实现思路
   8.8.2 主界面的代码实现
  8.9 小结
  习题
第三部分 面向对象分析与设计
 第9章 面向对象基础
  9.1 面向对象概念
  9.2 面向对象模型
   9.2.1 用例模型
   9.2.2 逻辑模型
   9.2.3 交互模型
   9.2.4 部署模型
  9.3 UML统一建模语言
   9.3.1 UML的组成
   9.3.2 UML的视图
  9.4 面向对象分析与设计过程
   9.4.1 面向对象分析过程
   9.4.2 面向对象设计过程
  9.5 小结
  习题
 第10章 面向对象分析与建模
  10.1 用例驱动分析
   10.1.1 用例建模分析
   10.1.2 开发活动图
   10.1.3 开发泳道图
  10.2 领域与业务建模
   10.2.1 识别业务类和领域类
   10.2.2 开发业务类图
   10.2.3 识别属性和操作
   10.2.4 开发交互图
   10.2.5 开发包图
   10.2.6 逻辑架构
  10.3 系统行为建模
   10.3.1 建立系统顺序图
   10.3.2 建立操作契约
   10.3.3 建立顺序图
   10.3.4 POS机系统的状态图
  10.4 POS机系统案例分析
  10.5 分布式结对编程系统分析与建模
   10.5.1 项目概述
   10.5.2 功能描述
   10.5.3 逻辑分析与建模
  10.6 小结
  习题
 第11章 面向对象设计与实现
  11.1 面向对象设计模型
  11.2 构件级设计
   11.2.1 关于构件
   11.2.2 构件级设计步骤
   11.2.3 构件级设计原则
  11.3 确定并发性
  11.4 使用设计模式
   11.4.1 基于职责的对象设计
   11.4.2 常见的设计模式
  11.5 面向对象详细设计
   11.5.1 模型精化
   11.5.2 逻辑架构的精化设计
   11.5.3 分层设计
   11.5.4 详细设计问题
   11.5.5 面向对象设计的进一步讨论
   11.5.6 详细设计中的实现问题
  11.6 数据存储与持久性设计
  11.7 部署设计与构件图
  11.8 面向对象设计案例分析
   11.8.1 POS机系统
   11.8.2 分布式结对编程系统
  11.9 小结
  习题
第四部分 软件测试、维护与管理
 第12章 软件测试
  12.1 软件测试概述
   12.1.1 软件测试的目的
   12.1.2 验证与确认
   12.1.3 软件测试的原则
  12.2 软件测试策略
   12.2.1 单元测试
   12.2.2 集成测试
   12.2.3 确认测试
   12.2.4 系统测试
  12.3 测试用例设计
  12.4 黑盒测试技术
   12.4.1 等价类划分
   12.4.2 边界值分析
   12.4.3 错误推测
   12.4.4 因果图
  12.5 白盒测试技术
   12.5.1 逻辑覆盖
   12.5.2 基本路径覆盖
   12.5.3 循环路径测试策略
  12.6 集成测试技术
   12.6.1 集成策略
   12.6.2 性能测试
   12.6.3 案例分析:ATM系统取款功能的测试
  12.7 面向对象测试技术
   12.7.1 面向对象分析的测试
   12.7.2 面向对象设计的测试
   12.7.3 面向对象编程的测试
   12.7.4 面向对象的单元测试
   12.7.5 面向对象的集成测试
   12.7.6 面向对象的系统测试
  12.8 调试技术
   12.8.1 调试过程
   12.8.2 调试策略
  12.9 测试管理
   12.9.1 测试计划与设计阶段
   12.9.2 测试实施阶段
   12.9.3 测试总结阶段
  12.10 软件测试文档编写
   12.10.1 软件测试计划文档
   12.10.2 软件集成测试文档
  12.11 小结
  习题
 第13章 软件维护
  13.1 软件维护概述
   13.1.1 软件维护的目的
   13.1.2 软件维护的特点
   13.1.3 软件的可维护性
  13.2 软件维护类型
 

教学资源推荐
作者: 张家浩
作者: (美)Roger S. Pressman  Bruce R. Maxim 著
作者: 黄敏 刘孜文 等编著
参考读物推荐
作者: 葛志春 刘志成 聂艳明 冯向科
作者: (美)Capers Jones 著
作者: [美]Kim Caputo