软件工程方法与实践

出版时间:2009-5  出版社:窦万峰、 等 机械工业出版社 (2009-05出版)  作者:窦万峰  页数:287  

前言

软件工程概念自1968年提出以来,经过了近四十年的发展,为软件行业从业人员从事软件开发和维护提供了理论指导和基本原则,促进了软件产品和软件行业的快速发展,也促进了软件工程自身的理论体系的完善和发展。软件工程涉及软件分析、设计、实现和维护等软件生命全过程,包含了一系列原理、方法和实践,指导人们进行正确的软件开发。软件工程强调从工程化的原理出发,按照标准化规程和软件工程实践来开发和管理项目,并进行过程改进,促进软件企业向标准化和成熟化发展。软件工程领域包括三个重要方面:软件开发、软件项目管理、过程改进。软件工程是一个理论与实践相结合的学科,更注重通过实践来理解理论和原理与方法。为此,本书结合作者多年从事软件工程教学和项目开发的经验,通过5个项目实例,从不同的角度和范型循序渐进介绍软件开发过程中所涉及的原理、方法与技术。全书分为五个部分:第一部分:软件工程概述。共4章内容,初步介绍软件工程的基本概念,涉及的主要内容,软件过程生命周期及其模型,以及本教材的案例与要求。第二部分:软件分析。在这一部分共安排了3章内容,主要介绍软件分析与建模的原理和方法,包括结构化分析和面向对象分析的原理和方法。本部分分别介绍了分析的基本过程、非形式化的分析方法和获取需求的策略;介绍了结构化分析建模技术,包括面向数据流的分析技术和面向数据的分析技术;介绍了面向对象分析建模技术,包括用例建模、对象建模等,介绍如何用UMI.语言表示面向对象模型。本部分用案例进一步深化分析的思想和原理及过程。第三部分:软件设计。在这一部分共安排4章内容,主要介绍软件设计原理和方法,包括结构化设计和面向对象设计技术。介绍设计的基本概念、原理和过程;介绍面向数据流的设计方法和面向数据结构的设计方法;介绍面向对象的设计方法,包括设计模型、精化设计、动态设计;介绍详细设计和界面设计等。本部分通过案例深入理解设计方法和过程。第四部分:软件测试与维护。在这一部分安排两章内容,主要介绍软件测试原理与技术、维护策略与方法。介绍测试过程、测试基本技术、测试用例设计;介绍软件维护类型、可维护性和结构化维护过程。

内容概要

  软件工程学将计算机科学理论与现代工程方法论相结合,着重研究软件过程模型、分析与设计方法、软件工程开发与管理技术和工具,是指导软件生产和管理的一门新兴的、综合性的应用科学。《软件工程方法与实践》分别从传统的结构化开发范型和面向对象开发范型两个方面,把软件工程的概念和理论知识融入到实践当中,通过丰富的案例分析与设计,更深入地理解软件开发中各个阶段的技术、方法和管理过程。《软件工程方法与实践》包括软件工程与过程、软件需求分析与建模、软件设计、软件测试与维护和软件工程管理五个部分,共16章,深入介绍了软件开发“工程化”思想。  《软件工程方法与实践》适合作为高等院校软件工程课程的教材,即适用于计算机专业的学生,也适用于其他非计算机专业从事软件开发与应用及管理的专业学生和技术人员学习的教材。《软件工程方法与实践》还可以成为从事软件开发人员必备的参考书。  《软件工程方法与实践》将软件工程原理和实践分析相结合,以案例项目为主线贯穿全书,介绍了软件工程涉及的概念。原理和方法,按照软件工程阶段要求建立系统模型,包括分析。设计、测试、管理等。在每个阶段安排能够体现该阶段原理和思想的案例,全面介绍软件工程的要点,使学生能够深入理解软件工程的原理。方法和技术并充分认识开发过程和迭代工作的重要性,同时进一步了解企业软件工程运用的规范和要求,为日后工作中出色完成项目任务和迭代任务打下坚实的基础。  《软件工程方法与实践》特点  ·坚持基本理论适度,强调工程实践和应用环节,把软件工程的概念和理论知识融入实践之中。  ·以”案例”为驱动,以实践教学为基础,提供5个典型案例支持,不同的案例介绍和分析层次充分体现技术的适用性和方法的实用性。  ·注重教学资源的配套,为任课教师配有电子教案。  ·配套教材《软件工程实验教程》,引导学生学习软件生命周期各阶段所用到的CASE工具,包括软件文档标准与规范。软件分析与设计、软件测试和软件项目管理四个部分,共设计了15个实验,培养学生实践创新能力和专业技能。

书籍目录

前言 教学建议第一部分 软件工程与过程第1章 概述21.1 软件工程的基本概念21.1.1 软件的角色和特性21.1.2 软件演化31.1.3 软件神化和危机41.1.4 软件危机的解决途径41.2 工程化思想51.2.1 工程化所涉及的范围51.2.2 工程化管理思想51.3 软件工程两大范型51.4 软件工程思想与基本原理61.4.1 软件工程基本原理71.4.2 软件工程思想71.5 软件工程活动91.5.1 软件开发活动91.5.2 软件项目管理活动91.5.3 软件过程改进活动101.6 小结10习题10第2章 软件过程112.1 软件过程概述112.1.1 过程方法与工具112.1.2 软件过程框架122.1.3 软件过程模型122.2 软件生命周期122.3 能力成熟度模型集成132.4 敏捷过程162.4.1 什么是敏捷过程172.4.2 极限编程182.4.3 自适应软件开发202.4.4 动态系统开发212.4.5 特征驱动开发212.5 软件工程实践222.5.1 概念222.5.2 沟通实践232.5.3 计划实践232.6 小结24习题24第3章 软件过程模型253.1 瀑布模型253.2 增量模型263.2.1 增量构造模型273.2.2 演化提交模型273.3 螺旋模型273.4 协同开发模型283.5 面向对象过程模型293.5.1 面向对象概念293.5.2 统一过程模型303.5.3 组件集成模型333.6 面向方面的软件开发343.7 小结36习题36第4章 案例研究374.1 案例研究中涵盖的内容374.2 案例1:出卷系统374.3 案例2:短信系统374.4 案例3:POS机系统384.5 案例4:ATM机系统384.6 案例5:图书馆系统384.7 小结38习题38第二部分 软件需求分析与建模第5章 软件需求分析过程405.1 什么是软件需求405.1.1 功能需求405.1.2 非功能需求405.1.3 领域需求415.2 需求分析过程435.2.1 初步沟通435.2.2 导出需求435.2.3 分析和精化445.2.4 可行性研究445.2.5 协商与沟通445.2.6 规格说明445.2.7 需求验证465.2.8 需求变更管理465.3 启动分析过程465.3.1 确认利益相关者465.3.2 识别视点475.3.3 协同工作475.3.4 首次提问475.4 非形式化需求分析技术475.4.1 会谈475.4.2 调查表495.4.3 场景分析495.5 案例分析495.5.1 出卷系统495.5.2 POS机系统505.5.3 图书馆系统505.5.4 短信系统515.5.5 ATM机系统515.6 小结51习题52第6章 结构化分析建模536.1 分析模型概述536.1.1 分析模型元素536.1.2 分析模式546.1.3 目标与原理546.2 结构化需求分析546.2.1 结构化分析方法556.2.2 结构化分析模型556.3 面向数据的建模方法566.3.1 实体566.3.2 属性566.3.3 关系576.3.4 基数576.3.5 案例分析576.4 面向数据流的建模586.4.1 数据流图586.4.2 数据字典606.4.3 状态转换图616.4.4 加工逻辑的描述616.5 案例分析646.5.1 出卷系统646.5.2 图书馆系统666.5.3 POS机系统686.5.4 短信系统696.6 小结71习题71第7章 面向对象分析737.1 面向对象建模737.1.1 面向对象模型737.1.2 统一建模语言(UML)757.2 用例建模767.2.1 编写用例767.2.2 开发活动图817.2.3 泳道图827.3 建立领域模型827.3.1 识别分析类837.3.2 用例实现分析847.3.3 关联与依赖867.3.4 识别属性和操作867.4 行为建模877.4.1 系统顺序图877.4.2 操作契约887.4.3 顺序图与协作图897.4.4 状态图907.5 案例分析907.5.1 POS机系统917.5.2 ATM机系统927.5.3 短信系统967.6 小结98习题98第三部分 软件设计与建模第8章 软件设计1008.1 软件设计概述1008.1.1 软件设计过程和设计质量1008.1.2 概要设计说明书1018.1.3 详细设计说明书1028.2 软件模块化设计1038.2.1 软件模块化1038.2.2 抽象1048.2.3 体系结构1048.2.4 信息隐蔽1048.2.5 模块独立性1058.2.6 逐步求精1068.2.7 重构1068.3 软件结构1068.3.1 软件结构图1068.3.2 模块化设计的优化1078.4 软件系统结构模型1088.4.1 系统构成模型1088.4.2 系统控制模型1108.5 体系结构模式1118.6 小结111习题111第9章 结构化设计方法..1 139.1 结构化设计方法概述1139.1.1 概要设计1139.1.2 详细设计1139.2 数据流类型1149.2.1 变换型数据流1149.2.2 事务型数据流1149.2.3 混合型数据流1149.3 数据流设计方法1159.3.1 数据流映射步骤1159.3.2 变换流设计1159.3.3 事务流设计1169.3.4 综合分层的数据流设计1179.4 面向数据的设计1189.4.1 Jackson图1189.4.2 JSD方法设计步骤1189.4.3 JSD举例分析1199.5 结构化程序设计方法1219.5.1 基本概念1219.5.2 结构化程序设计工具1229.6 案例分析1269.6.1 出卷系统1269.6.2 图书馆系统1299.7 小结131习题131第10章 面向对象设计13410.1 面向对象设计过程13410.1.1 系统模型描述13410.1.2 逻辑架构和包图13410.1.3 对象识别13510.1.4 设计模型13510.1.5 对象接口描述13710.2 构件级设计13710.2.1 构件类13710.2.2 构件级设计步骤13810.2.3 基于类的构件设计原则13910.3 设计模式14010.3.1 设计模式概述14010.3.2 基于职责的设计14010.4 面向对象详细设计14410.4.1 领域模型精化14410.4.2 逻辑架构精化14710.4.3 包设计14910.4.4 精化的交互图15010.4.5 精化的类图15210.4.6 持久性设计15410.4.7 部署图与构件图15610.5 案例分析15710.5.1 POS机系统15710.5.2 短信系统15810.5.3 ATM机系统15910.6 小结163习题164第11章 软件实现16511.1 编码语言16511.1.1 编码语言的分类16511.1.2 编码语言特性16511.1.3 面向对象语言的特点16611.1.4 编码语言的选择16711.2 编码风格16811.2.1 编码的基本原则16811.2.2 面向对象编码原则16911.3 人机界面设计17111.3.1 人机界面分析和设计17111.3.2 人机界面设计步骤17311.3.3 人机界面设计指南17411.4 案例分析17511.4.1 POS机系统17511.4.2 短信系统17711.4.3 出卷系统19111.5 小结194习题194第四部分 软件测试与维护第12章 软件测试19612.1 软件测试的任务19612.1.1 验证与确认19612.1.2 软件测试的组织形式19712.1.3 软件测试的目的与原则19712.1.4 完成标准19912.2 软件测试过程模型20012.2.1 V模型20012.2.2 W模型20012.2.3 H模型20112.3 软件测试策略20112.3.1 单元测试20212.3.2 集成测试20412.3.3 确认测试20512.3.4 系统测试20512.4 测试用例设计20512.4.1 测试用例设计的目的20512.4.2 测试用例设计的方法和描述20612.4.3 测试用例设计的重要性和影响因素20612.4.4 编写测试用例时的注意事项20612.5 黑盒技术20712.5.1 等价类划分法20712.5.2 边界值分析法20812.5.3 错误推测法20912.5.4 因果图法20912.6 白盒技术21112.6.1 逻辑覆盖法21212.6.2 基本路径测试法21412.6.3 循环测试法21812.7 集成测试技术21912.7.1 集成策略21912.7.2 接口测试22112.8 自动测试工具22112.9 调试22212.9.1 调试过程22212.9.2 调试策略22312.1 0案例分析22412.1 1小结229习题230第13章 软件维护23113.1 软件维护概述23113.1.1 软件维护的任务23113.1.2 软件维护的特点23113.1.3 软件可维护性23213.2 软件维护类型23213.2.1 纠错性维护23213.2.2 完善性维护23313.2.3 适应性维护23313.2.4 预防性维护23313.3 软件维护技术与过程23313.3.1 面向维护的技术23413.3.2 维护支援技术23413.3.3 软件维护过程23413.4 非结构化维护和结构化维护23613.5 提高可维护性23613.6 面向对象的软件维护23813.7 小结238习题238第五部分 软件工程管理第14章 软件项目管理24014.1 项目管理概述24014.2 软件项目管理范围24114.2.1 人员24114.2.2 项目和过程24214.2.3 软件度量24314.2.4 软件项目管理计划文档24414.3 软件团队组织范式24614.3.1 民主分权式24614.3.2 控制集权式24714.3.3 控制分权式24814.3.4 敏捷团队24814.4 项目组织原则24914.5 软件过程管理24914.5.1 软件过程度量24914.5.2 软件过程改进25014.5.3 项目度量25114.6 风险管理25114.6.1 风险识别25214.6.2 风险预测25214.6.3 风险管理25214.7 软件配置管理25314.7.1 SCM基本概念25314.7.2 SCM过程25414.7.3 SCM中心存储库25514.8 小结256习题256第15章 软件项目估算25715.1 概述25715.1.1 项目计划与范围25715.1.2 项目资源25715.2 软件规模度量25815.2.1 面向规模的度量25815.2.2 面向对象的度量26015.3 软件成本估算的分解技术26015.3.1 基于问题分解的估算26015.3.2 基于过程分解的估算26215.4 经验估算模型26315.4.1 专家类比推断26315.4.2 由底向上估算方法26315.4.3 构造性成本模型26415.5 成本估算管理26615.6 案例分析26615.6.1 短信系统26615.6.2 POS机系统26715.7 小结268习题269第16章 软件项目计划与管理27016.1 软件质量管理27016.1.1 质量概念27016.1.2 软件质量保证27116.1.3 软件质量度量27216.1.4 软件复审27516.1.5 软件质量认证标准27616.2 项目计划27816.2.1 项目进度安排27816.2.2 进度安排方法27916.2.3 项目进度的跟踪管理28116.3 软件项目管理工具28116.4 小结286习题287参考文献2 88

章节摘录

插图:第1章 概述软件工程(Software Engineering,SE)的概念是在20世纪60年代末期提出的。这一概念的提出,目的是倡导以工程的原理、原则和方法进行软件开发,用来解决当时出现的“软件危机”。B.W.Boehm为软件工程下的定义为:“运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。”Fritz Bauer为软件工程下的定义为:“软件工程是为了经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善的工程化原则。”1983年IEEE(国际电气与电子工程师协会)提出了IEEE软件工程标准术语,将软件工程定义为:“开发、运行、维护和修复软件的系统方法”。其中,“软件”的定义为:“计算机程序、方法、规则、相关的文件资料以及在计算机上运行时所必需的数据。”尽管软件工程的具体定义不尽相同,且又有一些学者提出了更完善的定义,但其主要思想都是在强调在软件开发的过程中应用工程化思想的重要性。软件工程的目标是:根据需求分析确定可行性后,在给定的时间内开发出具有可修改性、有效性、可靠性、可维护性、可重用性、可适应性、可移植性、开销合宜并满足用户需要的软件产品。1.1 软件工程的基本概念软件工程的主旨是以工程化的思想进行软件开发,以生产高质量和高效率的软件,也就是说,软件工程研究的基础就是软件。那么,软件是怎么定义的?又有哪些特性?

编辑推荐

《软件工程方法与实践》:分别从结构化开发范型和面向对象开发范型角度循序渐进介绍软件开发过程相关的原理、方法和技术。理论知识和案例分析相结合,以5个典型案例项目贯穿全书。

图书封面

评论、评分、阅读与下载


    软件工程方法与实践 PDF格式下载


用户评论 (总计4条)

 
 

  •   上软件工程硕士,老师推荐的。近期要答辩了,买本看看,很有收获,有理论,有实践,值得推荐
  •   nice,good, very good,下次还来这里买
  •   不错,货真价实,好好好!
  •   自己学校老师出的,,,能不买嘛。。。学校就用这个教材。。。应付考试完全没有问题
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7