软件工程
2012-8
人民邮电出版社
吕云翔,王昕鹏,邱玉龙 编著
288
489000
吕云翔、王昕鹏、邱玉龙编著的《软件工程——理论与实践》从结构化方法和面向对象方法两方面介绍软件工程的基本概念、原理和方法,并用一个案例贯穿每一章的实践部分,让读者在认识软件工程原理的基础上,能进一步利用相关的工具对所学内容进行实践,从而实际掌握进行软件开发的各种技能。本书理论与实践相结合,内容翔实,可操作性强。
《软件工程——理论与实践》是高等院校计算机科学、软件工程及相关专业“软件工程”课程的理想教材。
第1章 软件工程概述
1.1 软件
1.1.1 软件的概念
1.1.2 软件的特点
1.1.3 软件的分类
1.2 软件危机
1.2.1 软件危机的表现
1.2.2 软件危机的原因
1.3 软件工程
1.3.1 软件工程的概念
1.3.2 软件工程的基本内容
1.3.3 软件工程的知识体系
1.4 软件生命周期
1.4.1 软件生命周期的概念
1.4.2 传统软件生命周期的各个阶段
1.5 软件开发模型及其发展
1.5.1 瀑布模型
1.5.2 演化模型
1.5.3 原型模型
1.5.4 增量模型
1.5.5 螺旋模型
1.5.6 喷泉模型
1.5.7 形式化方法模型
1.5.8 基于组件的开发模型
1.5.9 统一软件开发过程模型
1.5.10 敏捷模型
1.6 软件工程的相关工具
1.7 软件工程的常用信息源
1.8 Visio的功能及使用方法介绍
1.9 Rose的功能及使用方法介绍
小结
习题
第2章 可行性研究及需求分析
第3章 软件设计
第4章 编码及实现
第5章 软件测试
第6章 软件工程的其他相关内容
第7章 课程设计
参考文献
版权页: 插图: 统一软件开发过程模型是基于迭代思想的软件开发模型。在传统的瀑布模型中,项目的组织方法是使其按顺序一次性地完成每个工作流程。通常,在项目前期出现的问题可能推迟到后期才会发现,这不仅增大了软件开发的成本,还严重影响了软件开发的进度。采用迭代的软件工程思想可以多次执行各个工作流程,有利于更好地理解需求,设计出合理的系统构架,并最终交付一系列渐趋完善的成果。可以说,迭代是一次完整地经过所有工作流程的过程,从图1-25中我们可以看到,每个阶段都包含了一次或多次的迭代。 统一软件开发过程模型适用的范围极为广泛,但是对开发人员的素质要求较高。 1.5.10敏捷模型 随着计算机技术的迅猛发展和全球化进程的加快,软件需求常常发生变化,强烈的市场竞争要求更快速地开发软件,同时软件也能够以更快的速度更新。传统的方法在开发时效上时常面临挑战,因此,强调快捷、小文档、轻量级的敏捷开发方法开始流行。如今,“敏捷”已经成为一个非常时尚的名词。敏捷方法是一种轻量级的软件工程方法,相对于传统的软件工程方法,它更强调软件开发过程中各种变化的必然性,通过团队成员之间充分的交流与沟通以及合理的机制来有效地响应变化。 敏捷开发开始于”敏捷软件开发宣言”。2001年2月,17位软件开发方法学家在美国犹他州召开了长达两天的会议,制订并签署了“敏捷软件开发宣言”,该宣言给出了4个价值观。 (1)个体与交互高于过程和工具。这并不是否定过程与工具的重要性,而是更加强调人与人的沟通在软件开发中的作用。因为软件开发过程最终还是要由人来实施的,只有涉及软件开发过程的各方面人员(需求人员、设计师、程序员、测试人员、客户和项目经理等)充分地沟通和交流,才能保证最终的软件产品符合客户的需求。如果只是具有良好的开发过程和先进的过程工具,而开发人员本身技能很差,又不能很好地沟通,那么软件产品最终一样会遭到失败。 (2)可运行软件高于详尽的文档。对用户来说,更多地会通过直接运行程序而不是阅读大量的使用文档来了解软件的功能。因此,敏捷软件开发强调不断地、快速地向用户提交可运行程序,虽然不一定是用完整程序来让用户了解软件以及得到用户的认可,但重要文档仍然是不可缺少的,能帮助用户更精准、全面地了解软件的功能,软件开发的主要目标是开发出可执行的软件。 (3)与客户协作高于合同(契约)谈判。大量实践表明,在软件开发的前期,很少有客户能够精确完整地表达他们的需求,即便是那些已经确定下来的需求,也常常会在开发过程中改变。因此,靠合同谈判的方式将需求确定下来非常困难。对于开发人员来说,客户的部分需求变更甚至会导致软件的大范围重构,而通过深入分析客户需求之后,有时还会发现通过适当调整需求就可以避免做出重大调整。而对于前者的情况,开发团队往往通过和客户谈判,撰写精确的需求合同来限制需求变更。但这导致最终的软件产品功能与客户需求之间存在难以避免的差异,导致客户的满意度降低。因此,敏捷软件开发强调与客户的协作,通过密切的沟通合作而不是合同契约来确定用户的需求。