软件工程及软件方法学
-
PSP软件工程师的自我改进过程(美)Watts S.humphrey著本书系统描述了个体软件过程(PSP),并且解释了按可预测的进度交付优良产品的实践和方法。读者将会了解一个规范的软件工程过程所包括的具体内容。本书通过14章分步介绍了PSP方法。实用性与可读性较强,可作为高等学校计算机软件工程课程的教材,也可作为工程技术人员自学个体软件过程的教材,同时也是进行软件过程改善和能力成熟度模型SW-CMM评估的重要参考资料。随着软件工程专业的发展和成熟,个体软件过程(PSP)得到了广泛认可和应用实践。本书系统描述了个体软件过程(PSP),并且解释了按可预测的进度交付优良产品的实践和方法。读者将会了解一个规范的软件工程过程所包括的具体内容。本书通过14章分步介绍了PSP方法。第1章描述了PSP整体原理及介绍策略。第2章和第3章解释了如何遵循一个定义的过程和怎样收集和使用用于管理程序开发作业的数据。第4至第7章介绍了估算和计划。第8章至第12章阐述了质量管理和设计。第13章描述了如何将PSP方法用于各种工作。第14章描述如何将PSP方法用于TSP过程,以及TSP指导经过PSP训练的软件工程师怎样在一个项目中使用这些方法。本书实用性与可读性较强,可作为高等学校计算机软件工程课程的教材,也可作为工程技术人员自学个体软件过程的教材,同时也是进行软件过程改善和能力成熟度模型SW-CMM评估的重要参考资料。此书作为SEI 的PSP Body of Knowledge(BOK)的学习指导教材,为掌握PSP知识体提供必要的帮助。本书还可供软件过程改进人员、软件开发项目经理、程序员阅读参考。 -
对象设计(美)Rebecca WirfsBrock著内容提要本书通过大量例子,描述了一幅对象驱动的和谐设计场景。在这个设计场景中,对象是基本设计元素,而定义角色、设计责任和协调合作就构成了设计中的基本活动。角色描述了对象的功能,责任定义了对象必须完成的工作,协作则代表了对象之间的一种契约和互动方式。同时,书中也充满了各种关于设计的真知灼见,针对接口编程及封装变化等设计要旨无一不被细致入微到许多小例子中。严格地说,本书的主要读者是职业软件设计与开发人员,但只要您乐于学习且爱好编程,那么从本书中都能够得到帮助。就犹如本书前言所说,软件设计可以被看成是艺术与数学、天斌与训练的结合。如果您对自己的天赋充满自信,那么请拿起这本书,跟随作者来一次高强度的对象设计训练。 第1章 设计概念 11.1 对象机器 11.2 角色 31.3 对象角色构造型(role stereotypes) 41.4 角色、责任和协作 51.5 对象契约 71.6 领域对象 81.7 与应用相关的特定对象 91.8 接口 101.9 类 111.10 复合 141.11 继承 151.12 对象的组织 151.13 组件 161.14 模式 171.14.1 将Double Dispatch模式应用于特定问题 181.14.2 运用模式的现实利益 221.15 应用框架 221.16 体系结构 241.17 体系结构的风格 251.17.1 集中式控制 261.17.2 分散式控制:没有控制中心 271.17.3 委托式控制 271.17.4 测试互动:一个层次体系的例子 291.17.5 定位层次中的对象 301.18 设计描述 311.19 小结 311.20 进一步阅读 32第2章 责任驱动设计 332.1 观察、描述和设计的过程 342.1.1 启动生产过程:项目的定义和计划 372.1.2 搭建舞台:初期的描述 382.1.3 实施开发:设计 392.1.4 从多视角"观察" 412.2 撰写草稿:分析描述 412.2.1 用法描述 422.2.2 其他规范 482.2.3 术语表 482.2.4 概念上的对象 492.3 铸造特性:挖掘设计 502.3.1 CRC卡 512.3.2 创造:运用模式 542.3.3 寻求解决方案 572.3.4 在思想与细节之间跳跃 582.4 调整产品:精练设计 592.4.1 弹性和可扩展性设计 602.4.2 可靠性设计 612.4.3 使设计具有可预见性、一致性,并易于理解 622.5 小结 622.6 进一步阅读 63第3章 发现对象 653.1 发现策略 663.2 找寻对象、角色和类 673.3 为什么需要一个设计提纲 683.4 寻找的策略 713.5 名字到底有何内涵 733.6 描述候选对象 783.7 特征化候选对象 823.8 连接候选对象 833.9 寻找共同背景 853.10 审核已有对象,寻找其他的对象 883.11 小结 893.12 进一步阅读 90第4章 责任 914.1 责任是什么 914.2 责任来自哪里 934.3 责任分配策略 1044.3.1 记录责任 1054.3.2 进行初始分配 1074.3.3 解除困扰 1164.4 实现对象和责任 1184.5 检测对象的质量 1224.6 小结 1234.7 进一步阅读 123第5章 协作 1255.1 什么是对象协作 1255.1.1 为协作做准备 1265.1.2 记录候选协作 1265.2 "Speak for Me"软件的设计故事 1285.3 协作的选择 1285.3.1 谁有控制权 1305.3.2 对象之间的互信度应为多少 1305.4 确定协作的策略 1325.4.1 审视个体对象的角色:构造型隐含协作 1335.4.2 审视个体责任:它们隐含着协作 1395.4.3 为复杂责任设计细节 1405.4.4 为特定的任务设计协作 1415.4.5 确认可用的模式 1425.4.6 确认体系结构怎样影响协作 1435.4.7 解决协作中存在的问题 1445.5 模拟协作 1485.5.1 计划编制一个模拟 1485.5.2 执行一个模拟 1505.6 设计优良的协作 1535.7 让协作成为可能 1565.7.1 建立连接的指导方针 1575.7.2 设计可靠的协作 1595.8 何时结束 1605.9 小结 1615.10 进一步阅读 161第6章 控制风格 1636.1 什么是控制风格 1636.2 可选的控制风格 1646.3 衡量各方案利弊 1656.3.1 集中式控制 1656.3.2 委派式控制 1666.3.3 控制决策的局限性 1676.4 设计控制中心 1706.5 案例分析:外部用户事件的控制风格 1716.5.1 MessageBuilder对象的集中式控制 1746.5.2 将决策重构入MessageBuilder对象的状态方法中 1836.5.3 抽取决策权 1836.5.4 委派更多责任 1866.5.5 为邻居对象设计控制风格 1886.5.6 设计类似的控制中心:具有一致性 1916.6 小结 197第7章 描述协作 1997.1 讲述协作的提纲 1997.2 讲述协作的策略 2007.3 确立作用范围、深度和基调 2017.4 列出所要包含的内容 2027.5 决定细节层次 2027.5.1 显示一个鸟瞰视图 2037.5.2 只显示协作者 2057.5.3 显示协作者之间的互动顺序 2077.5.4 显示深度视图 2097.5.5 显示焦点互动 2117.5.6 显示实现视图 2127.5.7 显示如何改编协作 2127.5.8 UML图的不足之处 2157.6 选择适当的形式 2187.7 讲述、绘制以及描述:指导方针 2197.8 组织你的工作 2247.8.1 加强重视 2247.8.2 展开提纲 2257.8.3 了解基础内容 2267.8.4 进行总结 2277.9 保留提纲 2277.10 小结 2287.11 进一步阅读 228第8章 可靠的协作 2318.1 理解失败的后果 2318.2 增加系统的可靠性 2338.3 确定协作在何处可被信任 2348.3.1 可信任与不可信协作之间的比较 2348.3.2 信任的内涵 2368.4 确认哪些协作需要可靠性 2378.4.1 用例说明了什么 2388.4.2 区分异常和错误 2388.4.3 对象异常与用例异常 2398.4.4 对象异常基础 2408.4.5 异常和错误处理策略 2448.4.6 确定由谁负责 2468.5 设计一种解决方案 2488.5.1 积极探索异常条件 2488.5.2 限制目标范围 2498.5.3 记录异常处理策略 2518.6 建立异常处理设计文档 2528.7 回顾你的设计 2578.8 小结 2598.9 进一步阅读 259第9章 弹性 2619.1 弹性意味着什么 2619.2 弹性的程度 2639.3 弹性解决方案的效果 2659.4 明确弹性需求 2669.5 记录变化 2699.6 变化及其实现 2729.6.1 确定一个变化的影响力 2729.6.2 探讨实现弹性的策略 2739.6.3 使用模板和HOOK机制来支持变化 2739.7 模式在弹性设计中的角色 2819.7.1 以策略模式改变对象的行为 2819.7.2 使用中介者隐藏交互对象 2829.7.3 使用适配器安装一个预定义对象或系统 2829.7.4 模式是如何增加弹性的 2849.8 怎样建立弹性设计的文档 2849.8.1 为读者考虑 2899.8.2 描述如何做出一个变化 2909.9 修改遗留系统的设计 2929.10 小结 2949.11 进一步阅读 294第10章 关于设计 29710.1 软件设计的本质 29710.2 解决核心设计问题 29810.3 确定问题框架(Frame the Problem) 29910.4 处理启示性设计问题 30210.4.1 一个管理共享信息的例子 30210.4.2 一个连接问题的复杂性例子 30310.4.3 难度永远不会降低的设计问题 30410.4.4 启示性问题是否可以"另类" 30510.5 解决启示性问题的策略 30610.5.1 重新定义问题 30710.5.2 合成一个解决方案 30810.6 处理剩余问题 30910.7 设计职责 31010.8 进一步阅读 313 -
实用软件工程陆惠恩编著《21世纪高等学校计算机教育实用规划教材:实用软件工程》着重从实用角度讲述软件工程的基本概念、原理和方法,系统地介绍目前较成熟的、广泛使用的软件工程技术。《21世纪高等学校计算机教育实用规划教材:实用软件工程》内容包括软件工程概述,软件计划(软件定义、可行性分析、需求分析),结构化设计(概要谒计、详细设计、界面设计和数据代码设计等),软件编码与软件测试(程序设计、软件测试、调试、验证与确认),软件维护,面向对象方法学与统一建模语言UML的应用,软件工程管理技术,软件工具与转件开发环境,软件开发实例(招聘考试成绩管理系统)。每章都有小结供读者复习总结,精心挑选了习题供读者选用,选择题和填空题有答案。《21世纪高等学校计算机教育实用规划教材:实用软件工程》可作为应用型本科计算机相关专业的教材,也可供从事计算机软件开发及应用的广大科技人员参考。 -
软件工程(美)普雷斯曼(Pressman, R.S.)著随着计算机应用面向更广阔和更深入的方向发展,如今计算机软件已涉及到人们社会生活的各个领域。作为计算机系统的核心和灵魂,软件的重要性越来越被人们认识。软件是不可见的智力产品,专业人员一直在探讨如何获得高质量和低成本的软件产品,如何把软件工作组织得更加有效且更为合理。本书对软件工程学科的发展起了重要的推动作用,它在国际软件工程界拥有无可置疑的权威地位!本书从1982年的第1版开始,就受到软件工程界的重视,成为高等学校计算机专业软件工程课的重要教学参考书。20多年来,它的各个后继版本一直都是软件专业人士熟悉的读物。它在全面而系统、概括而清晰地介绍软件工程有关的概念、原则、方法和工具方面获得了广大读者的好评。此外,本书在给出传统的、对学科发展具有深刻影响的方法时,又适当地介绍了当前发展的、且有着生命力的新技术。本书第6版共32章,分为5个部分,分别属于5个专题:第一部分为软件过程,给出了软件过程的不同论点,考虑了所有重要的过程模型,涉及到传统的过程和(近年发展起来的)敏捷过程在指导思想上的争论。第二部分为软件工程实践,给出了分析、设计和测试方法,其中重点讨论了面向对象技术和UML建模。第三部分为应用Web工程,提供了Web应用系统的分析、设计和测试的全面工程方法。第四部分为软件项目管理,给出的是计划、管理和控制软件项目的人员关心的问题。第五部分是软件工程的高级课题,涉及到形式化方法、净室软件工程、基于构件的软件工程、再工程以及软件工程未来的发展趋势等问题。 -
计算机软件技术基础周峰等编《计算机软件技术基础》共有8章,系统地介绍了计算机软件技术的基础知识,常用的系统软件以及典型的应用软件开发方法。内容包括数据结构及算法、操作系统、数据库系统、软件工程、网络通信软件和数字信号处理软件开发的基础知识和方法。《计算机软件技术基础》为信息与电子类专业的计算机基础教材,特点是在系统介绍通用计算机软件基础知识的同时,加强了通信和信息处理基本软件的内容,使得信息与通信类软件的开发能够与通用计算机软件开发融为一体,同时突出信息与通信类软件本身的特点。通过《计算机软件技术基础》内容的学习使读者可以掌握基本的计算机软件开发方法,并在重要的系统软件(如操作系统、数据库系统)和典型的应用软件(如通信类软件、嵌入式系统软件)的开发中进行应用,从而掌握各类软件的开发技巧。《计算机软件技术基础》的另外一个特点是层次分明,对于非电子类专业或要求掌握基本软件技术的读者,书中对数据的结构,算法设计、软件工程、操作系统的内容以最简练的形式加以介绍,以便读者能够掌握软件技术的核心内容和思想,并能够根据今日的情况对另外的部分进行自学。《计算机软件技术基础》为信息与电子类专业本科生教材,也适合于从事信息与通信工作的广大科技人员参考使用。 -
计算机辅助零件工艺过程设计原理王细洋著本书全面地介绍了计算机辅助零件工艺过程设计的基本原理和软件设计方法。内容包括:工艺过程设计基础,CAPP软件工程,工艺数据库,零件工艺信息描述,工艺自动设计方法,面向产品集成的CAPP,敏捷制造环境下的CAPP技术,典型系统分析。本书可作为高等院校机械设计制造及自动化专业本科生和研究生的教材,也可供机械制造企业中的工艺设计人员、CAPP软件开发人员学习参考。 -
CATIA V5R15曲面建模实例精解曹岩CATIA软件是由法国Dassault宇航公司开发,并由IBM负责全球支持服务和销售的产品。CATIA具有完备的设计能力和很大的专业覆盖面,它是一套集成的应用软件包,内容覆盖了产品设计的各个方面:计算机辅助设计(CAD)、计算机辅助工程分析(CAE)、计算机辅助制造(CAM),既提供了支持各种类型的协同产品设计的必要功能,也可以进行无缝集成完全支持“端到端”的企业流程解决方案。本书内容覆盖了产品设计的各个方面,它由法国Dassault宇航公司开发,并由IBM公司负责全球支持服务和销售。本书从使用者的角度出发,通过融经验、技巧于一体的典型实例讲解,系统深入地介绍其主要功能和使用,使读者在完成各种不同实例的产品建模过程中,系统地掌握在CATIAV5R12中进行板杆类、型腔类、钣金类、箱体类、旋转体类、叶轮叶片类、空间曲面类、空间凸轮类产品零件的建模方法与过程。在配套光盘中附有实例文件和形象生动的演示动画,以方便读者理解和掌握相关知识。CATIA软件是一套集成的应用软件包,内容覆盖了产品设计的各个方面,它由法国Dassault宇航公司开发,并由IBM公司负责全球支持服务和销售。本书从使用者的角度出发,通过融经验、技巧于一体的典型实例讲解,系统深入地介绍其主要功能和使用,使读者在完成各种不同实例的产品建模过程中,系统地掌握在CATIA V5R12中进行板杆类、型腔类、钣金类、箱体类、旋转体类、叶轮叶片类、空间曲面类、空间凸轮类产品零件的建模方法与过程。在配套光盘中附有实例文件和形象生动的演示动画,以方便读者理解和掌握相关知识。本书内容全面,循序渐进,以图文对照方式进行编写,通俗易懂。适合CATIA用户迅速掌握和全面提高使用技能,对具有一定基础的用户也具有参考价值,并可供企业、研究机构、大中专院校从事CAD/CAM的专业人员使用。 -
工程材料手册殷国富 胡晓兵本手册(软件版)由常用资料、非金属材料和工程计算器三大功能模块组成,涉及的非金属材料数据资料主要包括橡胶及其制品、塑料及其制品、涂料、燃料、润滑材料、化工原料、纸与纸板、木材及其制品、水泥及其制品、玻璃及其制品、陶瓷制品、耐火材料和隔热材料、碳和石墨材料、石棉及其制品、云母及其制品、电气绝缘材料以及其他非金属材料等。本手册(软件版)具有非金属材料品种较全、数据资源丰富、使用方便、实用性强的特点,是目前国内非金属材料方面资料较为齐全和规范的数据库软件系统,也是实施制造业信息化工程的一种基础资源软件环境,适用于机械、电子、石油、化工、建筑、航空、轻工等行业从事工程设计、制造、施工、维修的工程技术人员使用,也可供相关专业的工程技术人员以及大专院校的师生参考。< -
计算机算法的设计与分析(美)阿霍《计算机算法的设计与分析(英文版)》是一部经典著作,着重介绍了计算机算法设计领域的统一原则和基本概念。书中深入分析了一些计算机模型上的算法,介绍了一些有效算法常用的数据结构和编程技术,为读者提供了有关递归方法、分治方法和动态规划方面的详细实例和实际应用,并致力于更有效算法的设计和开发。同时,对NP完全等问题能否有效求解进行了分析,并探索了应用启发算法解决问题的途径。另外,本书还提供了大量富有指导意义的习题。《计算机算法的设计与分析(英文版)》可以作为高等院校计算机专业本科生和研究生算法设计课程的教材,也可以作为计算机算法理论中更高级课程的教材。 -
CMM实践(美国)贾洛特著本书主要内容有:软件能力成熟度模型介绍,包括项目执行中基于过程的方法、Infosys应用概况;项目初始工作,包括建议和合同,需求说明和管理(需求分析和说明,需求变化管理,可追踪性管理);项目计划,包括过程定义和度量,过程数据库与过程能力基线,工作量预估与时间调度,质量计划与缺陷评价,风险管理(风险评估,风险控制及实例),项目管理计划,配置管理的概念、过程和实例;项目执行与终止,包括生存周期中的详细设计、构建、系统测试、接受和安装,数据采集与监控,项目监控与控制(数据采集,项目跟踪,量化监视和控制,缺陷分析和预防),项目核查(核查过程,核查分析),项目终结分析、归档,实例终结分析报告。作者PankajJalote教授是印度理工学院计算机科学与工程系系主任。在书中用实例使项目管理者和项目开发者了解CMM在实际项目中的作用。内容:1.简介第一部分项目初始化:2.提议与合同3.需求说明与管理第二部分项目计划:4.过程定义与度量5.过程数据库与过程能力基线6.工作投入预估与调度7.质量计划与缺陷检测8.风险管理9.项目管理计划10.成分构造管理第三部分项目执行与终止:11.生存周期的执行12.同级事项回顾13.项目监控与控制14.项目审核15.项目终结
