内容简介
在本书中作者将常用的UML模型学习完全融入到软件工程知识的学习中,以大量的实践案例为线索和示例,介绍软件工程和软件建模。目前,很多软件工程教材花费大量篇幅介绍结构化软件设计理论,将软件工程过程划分为结构化设计方法和面向对象设计方法两部分来介绍。而实际上结构化设计方法虽然还有一定的市场,但面向对象设计方法已经成为主流,所以本书完全抛弃了结构化设计方法,且在书中引入了敏捷编程方法等最新的设计理念。本书的最后一章介绍了软件项目管理,为不再进一步开设软件项目管理课程的学校做准备。本书第一章和第二章介绍软件工程的基本概念和基础理论。包括什么是软件,什么是软件工程以及软件工程研究的对象。重点介绍了软件过程模型和敏捷过程。这一部分的难点在于对统一过程模型和极限编程等具体开发过程的理解。第三章至第六章介绍软件需求和软件需求模型。这几章是本书的重点之一,详细介绍了UML用例图、类图、活动图、状态图、顺序图。首先介绍软件需求的基本相关概念,然后按照基于场景的需求模型、基于类的需求模型和基于行为的需求模型来逐步展开,中间每个重要内容中都穿插了多个实践教学案例,引导读者学习。重点在于引导学生如何使用UML模型来从不同角度描述软件需求。这一部分的难点都是和UML应用有关的,如用例说明的编写规范,备选类的筛选规则,活动图与状态图的区别和联系,顺序图上的参与者如何选择等。第七章至第十章介绍软件设计以及设计模型。软件的质量是设计出来的,没有高质量的软件设计绝不可能有高质量的软件产品,而软件设计却是计算机应用类本科生专业在软件工程中学习的最大障碍。究其原因是这部分理论更抽象,没有实践项目的接触和磨练,很多知识只能是照猫画虎,甚至于照着画都难以画好。作者在此以设计模型为基础,辅以大量的实践案例来详细描述软件设计。从软件设计概念和理论、整体架构设计分析、构件级软件设计分析、人机接口设计四个大的方面来介绍。重点在引导学生掌握最为基本和核心的知识,如软件的方面和横切、内聚和耦合、软件系统原型设计,以及人机接口的黄金三原则等。本书在这部分只介绍一些基本的概念和知识,让学生毕业走入社会后,对这方面的知识有一个基本的了解。质量管理主要从质量保证和质量控制出发来介绍,包括质量数据的收集与分析度量,正式技术评审,六西格玛方法等内容;软件测试主要介绍基本思想和测试过程,白盒重点介绍基于路径的测试技术,黑盒重点介绍等价类划分和边界测试技术;项目管理主要介绍估算和过程控制,以及配置管理和风险管理等。重点在质量数据的分析度量,路径测试技术,项目的估算和项目进度跟踪分析。难点在如何将这些理论在实践项目中灵活运用。
没有好的软件工程就不会有好的项目管理,套用这句话也可以说没有好的软件建模,就不会有好的软件工程。软件工程是计算机相关软件专业的核心专业课程,软件工程有不少好的教材,但是也有大部分这方面的教材存在知识陈旧,有些缺乏软件建模方面的内容。在教学过程中,为了达到好的教学效果,有时只好给学生同时指定两本参考教材,即使这样,找到一本合适的UML教材也不是一件容易的事。鉴于此,作者结合自己的企业工作经验和高校教学经验,将自己十余年来教授软件工程的教案配以大量的实践案例,编写成这本教材,希望能在软件工程教材建设方面有所改进,并对软件工程课程的教学有所帮助。
目录介绍
第1章软件与软件工程
1.1软件开发的本质
1.2什么是软件工程
1.3软件工程实践
习题1
第2章软件开发过程
2.1软件过程与软件质量关系
2.1.1软件过程
2.1.2软件过程与软件质量的关系
2.2软件生存周期过程
2.2.1通用软件过程模型
2.2.2软件开发过程
2.3软件生存周期模型
2.3.1瀑布模型
2.3.2增量模型
2.3.3演化模型
2.3.4螺旋模型
2.4UML与统一过程模型
2.4.1UML模型
2.4.2统一过程模型
2.5敏捷过程
2.5.1极限编程过程
2.5.2Scrum
习题2
第3章理解软件需求
3.1什么是软件需求
3.1.1软件需求的内容
3.1.2软件需求的基本性质
3.2需求获取方法
3.3需求规格说明
3.3.1需求规格说明书的格式和内容
3.3.2需求规格说明书的作用和意义
3.3.3需求规格说明书的审核和管理
习题3
第4章基于场景的需求建模
4.1UML用例图
4.2用例说明
4.3UML活动图
4.4基于场景建模
4.4.1ATM机系统示例
4.4.2飞机票网上预订系统示例
习题438
第5章基于类的需求建模
5.1UML类图
5.2UML图元关系建模
5.2.1关联关系
5.2.2泛化关系
5.2.3依赖关系
5.2.4细化关系
5.3UML对象图
5.4分析类模型
5.4.1构建领域类模型
5.4.2领域类的责任
5.5类 职责 协作者建模
习题5
第6章基于行为和模式的需求建模
6.1UML状态图
6.1.1状态
6.1.2转换和事件
6.1.3守护条件
6.2UML顺序图
6.2.1顺序图基本构件
6.2.2顺序图的扩展知识
6.2.3UML通信图
6.3需求分析模式
6.4基于行为的需求建模
6.4.1一般过程
6.4.2飞机票网上预订系统示例
6.4.3学生校园卡充值系统
习题6
第7章软件设计概念
7.1基本设计概念
7.1.1最好的软件设计
7.1.2软件设计的工作任务
7.1.3构件的功能独立
7.2基本设计模型
7.2.1静态数据物理模型
7.2.2体系结构设计模型
7.2.3软件构件级设计模型
7.2.4软件接口设计模型
习题7
第8章软件体系架构设计
8.1什么是体系架构设计
8.2体系架构风格类型
8.2.1数据中心型体系架构
8.2.2客户机服务器型体系架构
8.2.3数据过滤管道型体系架构
8.2.4功能分层型体系架构
8.2.5人工智能型体系架构
8.2.6面向对象型体系架构
8.3体系架构模型设计
习题8
第9章软件构件级设计
9.1软件构件级设计原则
9.1.1单一职责原则
9.1.2开闭原则
9.1.3Liskov替换原则
9.1.4依赖倒置原则
9.1.5接口分离原则
9.2UML构件级设计模型
9.3设计类模型
9.4构件的封装和复用
9.4.1发布复用等价性原则
9.4.2共同封装原则
9.4.3共同复用原则
习题9
第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.3用户界面其他设计问题
10.3.1响应时间
10.3.2帮助系统
10.3.3出错信息字典
习题10
第11章软件质量保证与质量控制
11.1软件企业的质量管理和质量成本
11.1.1人员组织结构
11.1.2软件企业质量管理职责
11.1.3软件项目质量保证计划
11.1.4软件质量成本
11.2数据收集和项目度量
11.2.1度量维度和参数
11.2.2收据收集和数据分析
11.2.3注意事项
11.3正式软件技术评审
11.3.1落实责任人
11.3.2会前准备
11.3.3会议过程
11.3.4评审结论
11.4项目质量保证
11.5项目质量控制
11.5.1软件测试计划
11.5.2软件项目审计
11.5.3静态测试与动态测试
习题11
第12章软件测试
12.1软件测试基本概念
12.1.1测试过程
12.1.2软件调试与测试完成标准
12.2白盒测试技术
12.2.1程序代码的环复杂性
12.2.2路径测试技术
12.3黑盒测试技术
12.3.1等价类划分技术
12.3.2边界值分析测试技术
12.4面向对象程序测试技术
12.4.1面向对象环境中的白盒测试
14.4.2面向对象环境中的构件级测试技术
12.4.3面向对象环境中的系统级测试技术
12.5软件测试说明与测试用例设计
习题12
第13章软件项目管理
13.1什么是软件项目
13.1.1软件项目管理
13.1.2软件项目经理
13.1.3软件项目组织形式
13.1.4人员的激励
13.1.5信息沟通
13.2项目立项和项目边界
13.2.1项目立项
13.2.2项目边界
13.3软件项目配置管理
13.3.1软件项目配置管理计划
13.3.2配置项
13.3.3配置库建设
13.3.4基线及配置项变更
13.3.5责任矩阵及配置项状态报告
13.4项目估算
13.4.1任务分解及简易估算法