软件项目开发与管理案例教程 本书特色
本书以一个贯穿项目为载体,以任务驱动的方式介绍软件开发中各阶段所需的知识、技术、方法、工具、开发过程,直至项目完成。本书围绕软件开发能力的培养组织内容,全书共8章,内容如下:第1章,介绍软件、软件开发、软件项目管理等相关概念,重点介绍软件开发中容易混淆的一些概念并为后续学习做知识准备;第2和第3章,介绍传统的软件开发方法,适合软件开发初学者学习;第4和第5章,介绍面向对象的开发方法,利于读者掌握目前流行的面向对象软件开发方法与工具;第6章,介绍软件的实现,包括编码与测试,只有通过测试的软件,其编码才能告一段落;第7章,介绍软件的维护;第8章,介绍本书软件项目完整的开发过程,可作为软件设计文档范本。
软件项目开发与管理案例教程 内容简介
教育部十六号文件《关于全面提高高等职业教育教学质量的若干意见》明确指出要“加强素质教育,增强学生的职业能力,加大课程建设与改革的力度”。本书尝试摒弃传统软件工程的学科性教学,围绕软件开发需要的职业能力培养,组织与设计本教材的教学内容。传统的软件教学重点在知识与技术教学,其不足主要表现在:概念与理论知识多、力求知识理论体系的完善,但软件开发技术、方法的教学针对性不强,每个软件开发阶段在过渡时技术上显得脱节,教学内容对程序编码的指导作用不明显等。所以,学生难以理解与领悟其中的内容,特别在实际操作上难以做到学以致用。另外,软件开发与管理模式灵活多样,知识体系庞大,要完整掌握难度也大。针对上述问题,笔者在进行教学内容设计时,分析了高等职业院校学生的特点,以软件开发专业人才应知应会的知识、能力作为培养目标,并围绕这些目标进行教学内容的设计。本书教学内容的设计具有以下特点:? 内容的取舍以实用为原则,为职业能力培养目标服务。? 以软件开发过程典型工作任务为重点,力争在技术上连贯。? 教学情境的设计深入浅出,以任务驱动的形式组织教学,使学生容易消化。? 加强各阶段教学内容在技术层面的衔接,突出了软件设计到编码技术上的过渡。? 内容组织中,体现了“项目导向、任务驱动”的教学。突出展现了软件开发引导案例的技术连贯及其实现,再通过它突出体现软件开发的重要理论知识。? 整个教学内容以一个项目(物流管理系统)为载体,将软件开发的理论、方法、工具、开发过程等融为一体。*后一章还提供这些案例的完整文档,让读者(特别是软件专业的学生)能掌握软件开发报告的编写能力。软件开发过程主要有需求分析、软件设计、编码与测试、软件维护等活动,它们构成了软件开发过程的主要任务阶段。但是这些活动之间的组织不是简单线性的,它们之间的组织关系非常灵活,有多种经典模式。这就是为什么这些内容在实际中难以被掌握的原因。软件开发各重要阶段的教学,就是本课程的教学重点内容,其实它们又是教学难点内容。这些教学内容及它们在技术层面的过渡往往被以前的教材忽略,或连贯性不强。本书以项目为导向,通过任务驱动组织这些内容,从而解决了上述重点与难点的教学内容展示及衔接问题。另外,本书的组织利于软件开发人员的学习。比如第1~3章,目的是培养学生了解软件开发过程,让初学者知道软件是如何开发的,使学生掌握软件编码前的一些概念,并掌握传统需求分析、软件设计的过程与基本方法。而后续第4、第5章是面向对象的方法,学生在已学习需求分析和软件设计的基础上,采用流行的面向对象的方法进行分析建模与软件设计,并体现了面向对象的设计向面向对象编码技术上的过渡。第6章介绍了软件的编码实现与测试,说明在软件的编码过程中,测试非常重要,只有通过测试才能得到实用软件,所以将代码编写与软件测试融为一章。第7章介绍了软件使用中的维护,软件维护是软件生命周期的一个重要内容,它保证了用户正常使用软件。第8章则通过一个物流管理系统软件开发案例,综合应用前面介绍的面向对象软件开发方法,示范了软件开发的过程及文档的编写。本书条理清晰、内容实用、技术连贯;书中内容的表述力争做到深入浅出,使易混淆的概念、方法等容易被理解与掌握。本书内容的过渡在技术上连贯,体现了“项目导向、任务驱动”的教学思想,利于培养学生的软件开发能力。本书内容有助于对软件开发其他课程的学习与借鉴。本书由牛德雄、龙立功担任主编,其中,第1章、第4章、第5章由牛德雄、龙立功编写;第2章、第3章由杨叶芬编写;第6章由熊君丽编写;第7章由扶卿妮编写;第8章由牛德雄、施茂航编写。另外,魏云柯设计了本书所用到的图,移动中心数学企业*公司参与了本书内容的设计,在此一并表示感谢。为了方便教师教学,本书配有电子教学课件及相关资源,请有此需要的教师登录华信教育资源网(www.hxedu.com.cn)免费注册后下载,如有问题,可在网站留言板留言或与电子工业出版社联系(E-mail:hxedu@phei.com.cn)。也可以通过178074603@qq.com与编者联系,或者进入QQ交流群(375571590)获取更多教学资源。目前,国内外关于软件工程、软件开发与管理方面的资料非常多,新理论、新技术层出不穷。如何更好地取舍与组织适合高等职业院校学生教学的内容,需要不断探索。通过编者一段时间的教学实践,证明使用本教材,学生很容易掌握以前烦琐的软件工程知识。由于编者水平有限,书中难免存在疏漏和不足,恳请同行专家和读者能给予批评和指正。 编 者
软件项目开发与管理案例教程 目录
第1章 软件开发与管理概述 (1)
1.1 软件与软件开发概述 (1)
1.1.1 程序、软件与系统 (1)
1.1.2 软件开发的特征 (3)
1.2 软件开发 (5)
1.2.1 软件开发过程 (5)
1.2.2 软件开发方法学和软件工程 (9)
1.3 软件项目管理内容 (10)
1.3.1 软件项目管理 (11)
1.3.2 软件质量管理 (13)
1.3.3 软件过程质量保证体系 (15)
小结 (18)
习题 (18)
实训:制定某项目进度计划 (19)
第2章 进行需求分析了解用户需求 (20)
2.1 软件需求概述 (20)
2.1.1 需求分析任务 (21)
2.1.2 需求分析过程 (21)
2.1.3 需求管理 (23)
2.1.4 软件需求分析从问题定义开始 (24)
2.2 需求分析方法与分析模型 (25)
2.2.1 需求分析与建模方法 (25)
2.2.2 需求分析模型 (25)
2.3 用传统方法建立系统数据模型 (26)
2.3.1 数据模型(E-R图)的建立 (26)
2.3.2 E-R图简述 (28)
2.3.3 数据字典 (30)
2.4 用传统方法建立系统功能模型 (30)
2.4.1 系统功能模型(数据流图)的建立 (31)
2.4.2 数据流图简述 (31)
2.4.3 功能模型简述 (32)
2.4.4 功能模型的文字描述 (33)
2.5 建立系统动态模型 (33)
2.6 需求说明书及书写重点 (35)
小结 (36)
习题 (36)
实训:对“学生管理系统”进行需求分析与建模 (37)
第3章 基于需求分析进行软件设计 (40)
3.1 软件设计 (40)
3.1.1 软件设计概述 (40)
3.1.2 软件设计与编码 (42)
3.1.3 软件设计的内容 (43)
3.2 项目设计案例 (44)
3.2.1 从E-R模型进行数据库设计 (45)
3.2.2 概要设计(软件结构设计) (46)
3.3 软件模块的详细设计 (49)
3.3.1 详细设计的任务 (49)
3.3.2 详细设计的工具 (50)
3.4 软件设计原则 (54)
3.4.1 模块与模块独立性 (54)
3.4.2 模块的耦合性 (55)
3.4.3 模块的内聚性 (56)
3.4.4 模块的规模、大小适中原则 (56)
3.4.5 信息隐藏和局部化的原则 (57)
3.4.6 抽象性的原则 (58)
3.5 软件设计说明书 (58)
3.5.1 软件概要设计说明书大纲 (58)
3.5.2 软件详细设计说明书大纲 (58)
小结 (59)
习题 (59)
实训一:对“学生管理系统”进行软件概要设计 (60)
实训二:对“学生管理系统”进行详细设计 (61)
第4章 用对象的观点与方法进行分析建模 (64)
4.1 概述 (64)
4.2 从业务描述出发建立系统的用例模型 (66)
4.2.1 建立系统用例模型 (66)
4.2.2 确定系统的用例 (67)
4.2.3 用例之间的关系 (68)
4.2.4 描述用例 (70)
4.3 从用例的交互中识别实体建立对象模型 (71)
4.3.1 识别类与对象 (71)
4.3.2 确定类的属性 (73)
4.3.3 确定类之间的联系 (73)
4.4 类与类之间的“关系” (74)
4.4.1 关联关系 (74)
4.4.2 泛化关系 (75)
4.4.3 依赖和细化关系 (76)
4.4.4 确定关联 (77)
4.5 从用例的交互中识别交互细节建立动态模型 (77)
4.5.1 建立顺序图 (78)
4.5.2 通过顺序图描述实体间的动态行为 (79)
4.5.3 通过顺序图等动态模型分析与确定类的行为 (79)
小结 (81)
习题 (81)
实训:用面向对象的方法进行需求分析与建模 (82)
第5章 用面向对象的观点和方法设计软件 (84)
5.1 面向对象软件设计概述 (84)
5.1.1 包图 (85)
5.1.2 数据库设计 (85)
5.1.3 软件架构和类两个层面的设计 (85)
5.2 高层软件体系结构设计 (86)
5.2.1 软件体系结构设计概况 (86)
5.2.2 软件体系结构设计内容 (86)
5.3 底层类的设计 (87)
5.3.1 系统各部件类的设计及其层次 (87)
5.3.2 业务领域类的设计 (88)
5.3.3 类设计 (90)
5.3.4 使用MVC设计模式 (91)
5.4 面向对象软件开发过程及*佳做法 (91)
小结 (93)
习题 (93)
实训:用面向对象的方法进行软件设计 (94)
第6章 按照软件设计进行编程实现并测试 (96)
6.1 软件编码概述 (96)
6.1.1 从软件设计过渡到软件编码 (96)
6.1.2 程序设计方法 (97)
6.1.3 常见计算机程序设计语言 (98)
6.1.4 常用软件开发工具 (103)
6.1.5 选择计算机程序设计语言并建立软件开发环境 (104)
6.1.6 制定程序编码规范 (105)
6.1.7 制定编程的过程标准 (106)
6.2 程序编码过程 (106)
6.2.1 迭代、增量的开发过程 (107)
6.2.2 选择某种MVC开发模式的工具编码 (107)
6.2.3 通过迭代开发直至满足用户需求 (108)
6.3 按照用户需求和软件设计测试软件 (108)
6.3.1 软件测试概述 (108)
6.3.2 软件测试阶段 (111)
6.3.3 软件测试用例设计案例 (113)
小结 (119)
习题 (119)
实训:对“学生管理系统”进行实现并测试 (120)
第7章 通过软件维护不断满足用户的需求 (121)
7.1 软件维护概述 (121)
7.1.1 软件维护原因 (121)
7.1.2 软件维护类型 (122)
7.1.3 软件维护中的常见问题 (123)
7.1.4 软件维护策略 (123)
7.2 软件维护的过程 (124)
7.2.1 维护组织 (125)
7.2.2 维护报告 (125)
7.2.3 维护过程 (125)
7.2.4 维护记录 (126)
7.2.5 维护评价 (127)
7.3 提高软件的可维护性 (127)
7.3.1 软件的可维护性 (127)
7.3.2 软件可维护性的量化 (127)
7.3.3 提高可维护性的方法 (128)
7.3.4 软件维护的副作用 (129)
7.4 软件维护相关文档 (129)
7.4.1 软件问题报告 (130)
7.4.2 软件维护申请报告 (130)
7.4.3 软件维护报告 (130)
7.4.4 软件用户意见反馈及满意度调查 (132)
7.5 实施软件维护 (134)
7.5.1 维护机构 (134)
7.5.2 维护流程 (134)
7.5.3 维护评价 (135)
7.5.4 维护成本 (135)
小结 (135)
习题 (135)
实训:设计一套结构化维护过程及文档格式 (136)
第8章 物流管理系统开发分析与设计案例 (137)
8.1 引言 (137)
8.2 项目概述 (138)
8.3 需求分析 (138)
8.3.1 业务描述 (138)
8.3.2 用例建模 (138)
8.3.3 用例交互实体建模—对象模型(实体类图) (139)
8.3.4 功能分析 (140)
8.3.5 交互细节的建模—动态模型 (141)
8.4 软件设计 (141)
8.4.1 功能模块设计 (141)
8.4.2 软件架构设计(基于JavaEE) (142)
8.4.3 实体类的设计 (144)
8.4.4 数据库设计 (144)
8.5 软件模块设计与实现 (147)
8.5.1 送货员信息管理模块 (147)
8.5.2 接单管理模块 (149)
8.5.3 接送货管理模块 (150)
8.5.4 仓储与分拣管理模块 (151)
8.5.5 结算管理模块 (155)
小结 (156)
附录A 计算机软件开发文件编制指南(GB/T 8567—1988) (157)
附录B UML简介 (174)
术语表 (176)
参考文献 (177)
软件项目开发与管理案例教程 作者简介
牛德雄(1965- ),男,汉族,硕士研究生毕业。主要研究方向:软件开发技术、软件工程、需求工程、项目管理、Java软件开发技术、移动开发技术。