《软件工程实例教程》以培养应用型软件人才为目标,全面系统地阐述了软件工程的基本概念、原理和典型方法。全书突出4个特点:第一,从始至终贯穿案例教学的思想,提高读者的学习兴趣;第二,内容新颖实用,介绍厂软件模式、xml、代码重构等内容在软件工程中的应用;第三,可操作性强,读者可参照书中给出的模板和案例,构建自己的应用;第四,通过对反面案例的点评,帮助读者深刻地领会软件工程的原理和规范,促使读者在实际工程中自觉应用软件下程的方法,自觉遵守软件工程规范。
《软件工程实例教程》适合作为高等院校“软件工程”课程的教材或参考书,书中给出了大量的表格和模板,可作为软件公司的培训教材使用,对具有一定实践经验的软件工程人员也有很好的参考价值。
本书历经两年多的时间,今天终于完成了。
软件工程方面的教材已经非常多了,本书以培养应用型软件人才为目标,突出4个特点: 第一,突出案例教学,从始至终贯穿了生活实例和软件项目的案例,帮助读者理解软件工程的内容、掌握软件工程的方法,灵活应用到实际的软件工程项目之中。第二,内容新颖实用,软件工程本身强调不断改进和完善过程,因此本书充实了软件模式、可扩展标记语言、代码重构等内容,并介绍了这些内容在软件工程中的应用。第三,可操作性强,在介绍分析和设计方法时,给出了详细的步骤,使初学者可以参照具体的步骤,尽快掌握并应用书中介绍的方法。第四,不仅告诉读者应该怎么做才是好的,还告诉了读者什么是不好的,为什么不好,以帮助读者深刻地领会软件工程的原理和规范,促使读者在实际工程中自觉应用软件工程方法,自觉遵守软件工程规范。
“软件工程”任重而道远,我们应该从两个方面理解“软件工程”: 一方面是把“软件项目”或“软件产品”的开发和维护工作当成一个工程去做,也就是说,作为一个“软件工程”的建设者和管理者,我们应该强调规划、设计、实施和验收过程的规范化和文档化;另一方面把“软件工程”作为一门学科,深入研究这门学科存在的问题,找出解决问题的方法,设计解决问题的过程,发明解决问题的工具。
本书共分为14章,第1章介绍软件工程概述,从软件危机的现象入手,介绍经典案例,并且进行详细的点评,由此引起读者对软件危机的重视,对软件工程的渴望。接着介绍软件的特点,讲述软件工程的基本原理、研究的主要内容,以及软件工程的发展历史。为了让读者对软件工程学科有一个完整的认识,第1章还介绍了软件工程学科的知识体系,最后介绍了软件工程师的职业素质和从业要注意的十大问题。第2章介绍软件过程,结合生活事例讲述了软件过程的基本概念和主要活动,介绍了几个主要软件过程模型的特点。第3章介绍软件工程管理,通过剖析一个项目经理的工作案例,介绍了软件项目管理的主要内容和方法,特别强调了人员管理、项目计划、配置管理和质量管理的内容,通过有趣的小故事把枯燥的质量管理内容变得鲜活一些,使读者感悟到软件质量是软件工程的基本保证。第4章介绍需求工程,特别强调需求在软件工程中的重要地位,\软\件\工\程\实\例\教\程\ /前 言/ 介绍了需求的类别、高质量需求的特征,分析了影响需求的因素,阐述了需求获取的方法,最后重点介绍了应对需求变更的方法。第5~6章介绍传统的结构化分析和设计方法及步骤,结构化方法中常用的数据流程图、实体关系图、状态转换图、数据字典和软件结构图、判定表等技术在许多实际项目中仍然在使用,即使是在面向对象方法中,某些局部也还是要用到结构化的技术,因此,本书还是把结构化方法作为一个主要内容进行了详细的讲述。第7~9章全面介绍了面向对象基础、面向对象建模技术、面向对象分析和设计方法。根据以往在教学中遇到的问题,以一个例子作为引导,剖析结构化方法存在的问题,并且以相同的案例分别用结构化方法和面向对象方法进行分析和设计,使初学者能够体会两种方法的特点。书中把面向对象分析和设计的过程分解为可操作的步骤,使初学者可以仿照书中的案例和步骤,快速掌握面向对象分析和设计方法,解决实际的软件工程问题。
第10章软件界面设计,介绍了软件界面设计的原则、要素和设计规范。结合实际项目的用户界面进行了设计点评,指出界面设计存在的问题,用这些反面案例帮助读者加深理解界面设计的原则。
第11至第13章分别介绍软件编码、软件测试和软件维护。在软件编码一章重点介绍了软件编码规范和良好的编程风格,简要介绍了通过软件重构手段保持软件结构清晰、简洁和规范的方法。软件测试一章的篇幅较大,因为我们发现软件测试环节在实际工程中越来越受到重视,并且很多计算机专业的毕业生走出校门后的第一份工作或多或少都与测试相关,因此,我们在讲述测试概念和方法的基础上,更加强调测试计划、测试策略和测试过程的实用化。软件维护通常对在校本科学生来说确实体会不到它的重要性,但是对实际的系统运维部门来说又非常需要软件维护的相关资料,针对这些问题,第13章软件维护,以理论与实践相结合的方针,在介绍维护理论的基础上,介绍了软件维护的内容、流程和实用的报表模板,便于系统运维人员参考和使用。
第14章介绍如何编写软件文档,分析了目前软件文档编写和管理中存在的具体问题,详细介绍了主要软件文档的作用和内容,讲述了如何写好软件文档的具体方法,最后给出了一些软件文档模板,供读者写作时参考。
本人自1985年在北京航空航天大学计算机系读硕士研究生期间开始学习软件工程。1988至1993年在大学从事软件工程教学,这期间对软件工程的理解还只是停留在书本上,基本上是照本宣科。幸运的是1994年至2001年在软件公司里主持参与了国内多个大型软件项目的设计和开发,特别是与IBM、Motorola等知名的软件公司合作,经历了由理论-实践-再体会理论-再次回到实践中检验-总结提高理论的过程,对软件工程有了比较深刻的理解。
本书的第5、6和10章由方英兰老师编写,第14章由段建勇老师编写,其余章节由吴洁明老师编写。在编写过程中参与了教育部“高等学校计算机科学与技术专业核心课程内容实施方案研究”项目中的“软件工程课程研究”组的工作,该项目的负责人是北京工业大学的蒋宗礼教授,还有清华大学的刘强教授、浙江大学的陈越教授。大家一起交流软件工程教学和实践的经验,讨论存在的问题和困惑。该项目组根据科学型、工程型和应用型计算机专业人才的培养目标,给出了“软件工程课程内容实施方案”。本书的内容组织基本上符合该实施方案的要求。
在此非常感谢上述各位教授,他们给予我许多的灵感。另外历运伟、李鹏、高振安、朱银涛、许士宾等研究生也参与了书稿的录入和文字检查工作。在此对所有帮助本书出版作出贡献的朋友和家人表示感谢!
由于时间关系和篇幅的限制,特别是本人水平有限,书中一定存在许多问题和不足,真诚地希望读者能够提出宝贵的意见和建议,帮助我们逐步完善本书的内容。清华大学出版社网站(www.tup.com.cn)提供本书的PPT课件、文档模板电子版、课程实验指导资料。
吴洁明2010年6月于北京
第1章 软件工程概述
1.1 软件危机
1.2 软件工程
1.3 软件工程学科知识体系
1.4 软件工程师职业道德
练习1
第2章 软件过程
2.1 软件过程的概念
2.2 几个典型的软件过程模型
2.3 迭代与递增
2.4 rup软件开发过程
2.5 敏捷开发
练习2
第3章 软件工程管理
3.1 人员组织与管理
3.2 软件规模与成本估算
3.3 软件开发计划与控制
3.4 软件配置管理
3.5 软件质量管理
练习3
第4章 需求工程
4.1 需求工程的概念
4.2 确定系统目标和范围
4.3 需求获取方法
4.4 需求分析的任务
4.5 需求分析的原则
4.6 定义软件的质量属性
4.7 需求优先级
4.8 需求验证技术
4.9 需求管理
练习4
第5章 结构化需求分析
5.1 结构化分析的主要技术
5.2 结构化分析方法的实现步骤
5.3 编写需求规格说明书
5.4 结构化分析案例
练习5
第6章 结构化软件设计
6.1 软件设计的概念
6.2 软件设汁原则和影响设计的因素
6.3 结构化设计方法
6.4 小型图书馆图书信息管理系统软件结构设计
6.5 优化软件结构
6.6 数据设计
6.7 详细设计
6.8 设计复查
练习6
第7章 面向对象基础
7.1 从一个例子看结构化方法的问题
7.2 面向对象的概念
7.3 面向对象开发的方法简介
7.4 uml语言
7.5 用例图
7.6 活动图
7.7 状态图
7.8 交互图
7.9 类图
7.10 配置图
7.11 组件图
练习7
第8章 面向对象分析
8.1 面向对象分析概述
8.2 建立用例模型
8.3 建立对象模型
8.4 构造动态模型
8.5 评审分析模型
8.6 面向对象的需求分析规格说明书
练习8
第9章 面向对象设计
9.1 面向对象的设计概念
9.2 面向对象的设计原则--类设计原则
9.3 xml在软件设计中的应用
9.4 基于uml的面向对象设计过程
9.5 面向对象设计规格说明书
练习9
第10章 用户界面设计
10.1 界面设计原则
10.2 界面设计
10.3 用户界面评价
10.4 用户界面设计案例分析
练习10
第11章 软件编码
11.1 程序设计语言
11.2 良好的编程实践
11.3 软件编码规范
11.4 代码重构
练习11
第12章 软件测试
12.1 软件测试基本概念
12.2 软件测试过程
12.3 软件测试计划
12.4 测试用例设计和测试执行
12.5 单元测试
12.6 集成测试
12.7 系统测试
12.8 验收测试
12.9 界面测试
12.10 面向对象的测试
12.11 软件测试工具
练习12
第13章 软件交付与维护
13.1 软件维护概念
13.2 维护过程
13.3 提高软件的可维护性
练习13
第14章 如何编写软件开发文档
14.1 软件文档的作用和要求
14.2 软件文档的种类和提供时机
14.3 软件文档的编写步骤
14.4 如何写好软件文档
14.5 文档管理
14.6 软件工程标准
14.7 几个常用软件文档的模板
练习14
参考文献