首页>参考读物>计算机科学与技术>软件工程及软件方法学

面向对象软件开发教程(原书第2版)
作者 : (加)Scott W.Ambler
译者 : 车皓阳 刘锐
出版日期 : 2003-06-01
ISBN : 7-111-11678-X
定价 : 39.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 375
开本 : 16开
原书名 : The Object Primer: The Application Developer's Guide to Object Orientation and the UML
原出版社:
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

本书是一本优秀的面向对象技术的基础教程,深受全世界专业人士和学生的广泛好评。作者以一种通俗易懂的方式清晰地解释了面向对象的基本概念,使用UML技术介绍了面向对象的需求、分析和设计方法。全书共分11章,每章专注于一个主题,包括需求收集、需求确认、00分析、00设计、见编程、00测试、软件过程等。每章最后都配有复习题,有助于读者自己测试对所学内容的掌握程度。本书作为00入门读物,可用作高校面向对象技术的教材,也广泛适用于00程序员、业务分析员、用户、项目经理、系统设计员等广大读者。

图书特色

scottAmbler是 OOConsultant类的一个实例,这个类为基于 denverColorado的roninlnternational(www.roin-intl.com)工作。roninInternational实现objectArchitectureConsulting()、componentArchitectUreConsulting()和softwareProcessConsulting()等操作。Humanoid-LifeForm的所有实例都可以发送电子邮件给他,电子邮件地址是:
  scott.ambler@ronin-intl.com
  scottAmbler是一个多才多艺的对象,他可以以多种形式改变自己的类型,以满足roninlnternational客户不同的要求。例如,他常常变为OOMentor、OOArchitect、OODeveoper或SoftwareProcessMentor对象。Scott自1991年以来已经是OOConsultant的一个实例了。他曾是MasterssStudent对象,从universityOfToronto类那里接受了一个InformationScience-Degree的买例。作为Mastersstudent,scottAmbler在OO CASE领域做了大量工作,并在计算机支持的协同上作(这是关于群件的一种学术名称)中实例化了一个ThesisPaper对象。他的ThesisPaper实例响应的惟一消息是sitonshelfAndGathcrDust,scottAmbler发现这虽然令人失望,但又是早就料到的。scottAmbler曾供职十多家机构,包括Bank、InsuranceCompny、TelecommumcationsCompally、InternetStartup、ServicesOutsourcer、MilitaryConiractor和ProductDistributor等类的实例。
  ScottAmbler定期为 softwareDevelopment(www.sdmagazine.com)和computingCanada(www.plesman.com)中的对象专栏写作。他的个人网站地址是http://www.ambysoft.com,在此他公布了一系列关于对象的白皮书和其他一些软件开发资源。

图书前言

本书是一本简明易懂的基础性教程,通过应用UML技术介绍了面向对象的概念、需求。分析和设计方法。面向对象(OO)是自结构化方法以来对系统开发过程的最重要的变革;在20世纪90年代,它代替了结构化范型而成为软件开发的主要方法。面向对象常常被用来开发复杂的系统,而了解如何使用面向对象技术进行工作并不很复杂。本书与其他面向对象的入门书籍不同,它是从实际开发人员的角度来阐述问题,只有这些开发人员才经受过学习这种令人兴奋的软件范型所面临的困难。谁应该阅读本书
  如果你是一名大型机上的COBOL或PL/1程序员的话,同时你又第一次参与OO的项目,本书会适合你。如果你是一名业务分析员或用户代表,需要处理OO应用的需求文档,那么本书同样也适合你。如果你是一名项目经理,需要在OO上加把劲的话,本书正是为你而准备的。如果你是一名系统设计员,你的单位正准备转向对象技术,本书也适合你。如果你是一名第一次上Java或C++课程的学生,这本书也会适于你。但如果你是一名研究人员或你的学术研究兴趣在于软件工程理论的话,很抱歉,这本书还做不到让你满意的程度。
  贯穿本书,我大量地使用了“开发人员”这个术语:开发人员是指任何参与软件应用程序开发的人。它包含了程序员、分析员、设计人员、用户代表、数据库管理员、支持工程师,等等。是的,很多人可能不会把用户代表包含于其中,但我的经验是,积极的用户参与往往是软件项目成功的决定性因素。用户可以积极地参与到需求、分析,有时甚至是设计当中,对我而言,显而易见,用户应当被当做开发人员。
为什么需要阅读本书  通过阅读本书,你可以获得对面向对象概念的深刻理解,同时也可以掌握一些基本的面向对象建模技术。这些都是在开发面向对象应用时,尤其是那些基于 C++和 Java的软件时所必备的基本技能。书中进一步将这些技术放在一个实例的背景当中进行讨论,你将会发现它们确实能够在真实世界中得以应用。
  为什么再版
  当我1994年写出本书的第1版时,对象工业界相对来说处于较为混乱的状态。建模标记的“战争”还在不断地蔓延,尽管已经存在七、八个广为人知的建模标记以及30多个不是那么流行的符号,但却仍然没有出现明显的优胜者。现在,当我在1999/2000年冬天重写本书的时候,统一建模语言已经成为工业标准。1994年,以用户为中心的设计充其量仅是软件开发环境中一个不太重要的概念;现在以应用为中心的设计(例如本质用况建模)也已成为工业标准。在1994年时,许多组织还不太确定是否要采纳对象技术,而在2000年,对象和组件技术已经成为大多数组织内部所承认的标准。1994年,Smalltalk、Eiffel和C++还在竞争成为语言的统领者,而到2000年,Java却明显地成为市场中的胜利者,紧随其后的是C++——一般用于性能要求高的应用当中。真是时过境迁哪!第2版中有哪些新内容
  第2版保持了第1版的强势和品质,它简单而易于理解。但是,第2版在第1版的基础上增加了新的内容,加入了一些以应用为中心的设计技术,例如本质用况建模和基本用户界面建模。还包括了CRC建模——极限编程的一项关键技术。分析和设计建模也增加了新内容,包括了基本的UML技术以及持久性(数据)建模。同样,也加入了一些介绍如何从设计到编程再到测试等内容的章节,进一步完善本书。最后,像模式和统一过程这样先进的开发技术和过程也被包含进来,以介绍目前的技术发展状况。更重要的是,第2版反映了我在过去的5年来在各个问题领域帮助其他人了解如何使用对象技术的经验。



图书序言

最近在网上冲浪时,我看到了一些非常有趣的数字。分析人员指出,30%~40%的软件项目订单都被取消了。软件项目平均费用几乎是最初预计费用的两倍多,只有15%~20%的软件项目可以按预计时间和预算完成。另外,还有机会成本,它测量那些损失的商业机会,而这些商业机会是:如果项目从一开始就能正常进行的话本可以抓住的机会。机会成本是一个真正的问题,现在已经增长到了相当惊人的程度。
    面对这些数据我变得非常迷惑,这就是我们从业的真实情况吗?很明显,现实情况的确如此——这活生生的数字不会说谎。那什么才是产生这种灾难性后果的原因呢?
    最显然的一个答案是在项目中缺乏足够的开发人员资源。我们所处的时代是一个开发人员统治一切的时代,社会急需开发人员,但开发人员又十分稀缺。这就造成了IT行业中显著的供需不平衡。
    然而,这只是冰山一角。还有许多其他因素导致了软件开发的失败。例如差劲的软件开发过程、苛刻的用户以及不恰当的面向对象分析和设计等等。
    好的一面是,我们能够通过教育改变这些不利因素。通过了解正确的软件开发,就可以避免那些曾出现在其他工业中的绊脚石。避开这些问题非常重要,尤其当时间与市场的对比是以周而不是以月或年来计算时。
    本书是学习面向对象软件开发的最好教程。当阅读本书时, Scott Ambler将为你解释很多概念和范型,这些内容都可以立即在软件开发中用到。这些概念以一种易于理解、令人愉快的方式进行讲解,使得任何开发者,不管其背景如何,都可以掌握这些概念。
    我坚信阅读本书会增加项目成功的机会。在进行软件开发时,本书能使你对自己可接受的内容尽早下定决心,这将有助于增加你作为独立开发人员的市场竞争力。
    我希望你们在项目开发过程中工作顺利,让我们一起,共同完善我们自己。
                                                   Ed Roman
   CEO,The Middleware Company
   edro@midddleware-company.com

作者简介

(加)Scott W.Ambler:暂无简介

译者简介

车皓阳 刘锐:暂无简介

译者序

正是由于本书,我们才得以了解 Scott W. Ambler,他既是一名优秀的开发人员,又是一名高产的作家,同时还是一位咨询公司的总裁。Ambler对软件工程中诸多领域(例如敏捷建模、极限编程、软件模式、统一过程等)都有涉足,曾出版过多部相关著作,近年来的研究重点放在了统一开发过程上面。作者在本书中以一种详熟、简明的风格带领我们踏进了对象技术的神奇世界。本书不同于一般软件工程类图书,它更侧重于实际应用,书中给出了一些具体应用情景和实用技巧,如果我们能对其多加思考,并能熟练运用,相信会收获不菲。“UML播种机”( http://www.umlchina.com)中有关于Scott W.Ambler的访谈录(《非程序员》杂志第12期中亦有相关内容),从中读者们可以了解他的兴趣所在,领略他关于“空手道和太极拳”的精彩论断。
  我们大家都知道,翻译有三个基本原则:“信”、“达”、“雅”。科技书籍的翻译与文学书籍有一些不同之处,它更侧重于达到“信”和“达”两字所确定的目标,而井不过份执着于“雅”字所要求的境界。我们认为,译文与原文一样都是随着时代而变化的,同一段原文在不同时代背景下也应翻译为不同的内容,换句话说,翻译应该具有时代特征,我们认为三字原则中的“信”字应该包含这一特征。例如, Operational Research为“运筹学”的意思,但在 1956年时的翻译却是“运用学”,如果现在我们仍然翻译为“运用学”的话,恐怕没有人会弄清楚我们在说什么。因此,在本书中,我们也遵循这一原则进行翻译。
  我们把本书的中译本奉献给亲爱的读者,希望读者能从中得到些许收获。由于译者知识水平和眼界所限,缺点和错误在所难免,敬请读者对翻译中的缺点和错误提出批评、指正。
                              车皓阳 刘锐
                             223年于中科院软件所

图书目录

第1章简介
1.l 结构化范型与面向对象范型
1.2 本书怎样组织
1.3 怎样阅读本书
1.4 你学到了些什么
第2章 面向对象:一种新的软件范型
2.l 面向对象潜在的优点
2. 1. 1 增加可复用性
2.1.2 增加可扩展性
2.1.3 改进质量
2. 1.4 财务利益
2.l.5 增加项目成功机会
2.1.6 减少维护负荷
2.1. 7 减少应用积压
2.1. 8 可管理的复杂件
2. 2 面向对象潜在的缺点
2. 3 对象技术会成为主流技术
2. 4 现有的对象标准
2.5 面向对象软件过程
2. 6 你学到了些什么
2.7 复习题
第3章 收集需求:从本质用况到变例
3.1 组建需求建模团队
3. 1.l 选择好的SME
3.1.2 选择出色的协调人员
3.l.3 选择出色的抄写员
3.2 基本需求收集技术
3.2.l 会谈
3. 2. 2 集体讨论
3.3 本质用况建模
3.3.l 一图胜千言:绘制用况图
3.3.2 确定参与者
3.3. 3 编写用况文档
3.3.4 用况:本质用况和系统用况
3.3.5 确定用况
3.3. 6 为不同的逻辑流程建模:活动的候选过程
3.4 本质用户界面原型
3.4.l 本质用户模型的例子
3. 4.2 确保系统可用性
3.4. 3 画出用户界面流程图
3.5 使用类职责协作卡进行领域建模
3. 5.l 为CRC模型做准备
3. 5.2 发现类
3.5.3 发现职责
3.5. 4 定义协作者
3.5.5 排列 CRC卡
3.5.6 CRC建模的优点与缺点
3.6 开发补充规范
3.6.l 确定业务规则
3. 6. 2 确定非功能需求和约束
3.7 确定变例
3.7. 1 记录变例
3.7.2 变例的优点
3.8  组织建模房间的经验
3.9 需求技巧和技术
3.10 你学到了些什么
3.11 复习题
第4章 确定需求正确无误:需求确认技术
4.l 尽早测试、经常测试
4.2 用况情景测试
4.2.l 用况情景测试过程的步骤
4.2. 2 创建用况情景
4. 2. 3 演练情景
4.2.4 用况情景测试的优点
4.2. 5 用况情景测试的缺点
4.3 用户界面走查
4.4 需求评审
4.5 你学到了些什么
4.6 复习题
第5章 理解基础知识:面向对象的概念
5. l 新老概念
5. 2 从结构化观点看待面向对象
5. 3 对象和类
5. 4 属性和方法
5.5 抽象、封装和信息隐藏
5.5. 1 抽象
5.5.2 封装
5.5.3 信息隐藏
5.5.4 一个例子
5. 5. 5 为什么这很重要
5.6 继承
5.6. 1 建立继承模型
5.6. 2 继承技巧和技术
5. 6.3 单一继承和多重继承
5.6.4 抽象类和具体类
5. 7 关联
5. 7.l 关联建模
5.7.2 怎样实现关联
5.8 聚合
5.8. 1 聚合建模
5.8. 2 聚合技巧与技术
5.9 协作
5.9.l 消息
5.9.2 协作技巧和技术
5.10 持久性
5.10.l 持久性技巧和技术
5.10.2 持久内存:对象空间
5. 10.3 对象数据库
5.11 持久关联与临时关联
5. 11. 1 持久关联
5.11.2 临时关联:依赖
5.12 耦合
5.13 内聚
5.14 多态
5.14.l 一个例子:扑克游戏
5.14.2 大学里的多态
5.15 接口
5.16 组件
5.17 模式
5.18 你学到了些什么
5.19 复习题
第6章 确定构建内容:面向对象分析
6.l 系统用况建模
6. 1 1 编写系统用况
6. 1.2 在用况模型中复用:扩展关联、包含关联和继承
6. 1.3 可以帮助理解用况建模的好东西
6.1.4 用况建模技巧和技术
6.2 顺序图:从用况到类
6.2. 1 怎样绘制顺序图
6.2.2 为什么以及何时应该绘制顺序图
6.2.3 怎样归档顺序图
6.2.4 有助于了解顺序图的好东西
6. 3 概念建模二类图
6.3.l 类、属性和方法建模
6.3.2 关联建模
6.3.3 依赖建模
6.3.4 通过继承在类间引人复用
6.3. 5 聚合关联建模
6.3. 6 关联类建模
6.3.7 归档类模型
6.3.8 概念类建模技巧
6. 4 活动图
6.4.l 怎样绘制活动图
6.4.2 怎样归档活动图
6.5 用户界面原型
6.5.1 确定用户需求
6.5. 2 构建原型
6.5.3 评估原型
6.5.4 决定是否要结束
6.5.5 有助于理解原型的好东西
6.5.6 原型技巧和技术
6.6 演化补充规范
6.7 有效应用分析模式
6.7.l "业务实体"分析模式
6. 7. 2 "联系点"分析模式
6.7.3 模式的优点和缺点
6.8 用户文档
6.8.l 用户文档的类型
6.8. 2 怎样写用户文档
6.9 用包组织模型
6.10 你学到了些什么
6. 11 复习题
第7章 确定如何构建系统:面向对象设计
7. 1 把模型层次化--类类型体系结构
7.1. 1 用户界面层
7.1.2 控制器/处理层
7.1.3 业务顺域层
7.1.4 持久层
7.1.5 系统层
7.2 类建模
7. 2.l 继承技术
7.2.2 关联与依赖技术
7.2.3 聚合与组合技术
7.2.4 在设计过程中为方法建模
7.2.5 在设计过程中为属性建模
7. 2.6 在模型中引入接日
7. 2. 7 类建模设计技巧
7.3 有效应用设计模式
7. 3.1 Singleton设计模式
7. 3.2 Facade设计模式
7.3.3 有效应用模式的技巧
7.4 状态图建模
7.4.1 如何绘制状态图
7.4.2 什么时候以及为什么要绘制状态图
7.4.3 状态图和继承
7.5 协作建模
7. 5.l 绘制协作图
7.5.2 协作与继承
7.5. 3 什么时候该画协作图
7.6 组件建模
7. 6.l 如何开发组件模型
7.6.2 实现组件
7.7 部署建模
7.7. 1 如何开发部署模型
7.7.2 什么时候该生成部署图
7.8 关系持久性建模
7.8.l 键和对象标识符
7.8.2 把对象映射到关系数据库的一些基本知识
7.8.3 映射关联、聚合与组合
7.8.4 绘制持久模型
7.8.5 何时才应该开发持久模型
7.9 用户界面设计
7.9.l 用户界面设计原则
7.9.2 改善用户界面设计的技术
7.9.3 用户界面流程图
7.9.4 用户界面设计标准和准则
7. 10 设计技巧
7.11 你学到了些什么
7.12 复习题
第8章 构建系统:面向对象编程
8.l 什么是编程
8.2 从设计到 Java代码
8. 2.l 用Java实现一个类
8.2.2 用Java声明实例属性
8.2.3 用Java实现实例方法
8.2.4 用Java实现静态方法和静态属性
8.2.5 实现构造器
8.2.6 用访问器封装属性
8.2.7 用Java实现继承
8.2.8 用Java实现接日
8.2.9 用Java实现关联、聚合与组合
8.2.10 实现依赖
8.2.11 用 Java实现协作
8.2.12 实现业务规则
8.3 从设计到持久代码
8.3.l 实现持久代码的策略
8.3.2 定义与修改持久模式
8.3.3 创建、检索、更新、删除数据
8.3.4 实现关系数据库的行为
8.4 编程技巧
8.4.l 写出整洁代码的技术
8. 4. 2 编写高效文档的技术
8.4.3 其他因素
8.5 你学到了些什么
8.6 复习题
第9章 面向对象测试
9.l 消除对面向对象测试的误解
9.1.l 误解1:有了对象就可以少做点儿测试
9.1.2 误解2:结构化测试技术是充分的
9.1.3 误解3:测试用户界面是充分的
9.2 全生命周期面向对象测试
9.2.l 回归测试
9.2.2 质量保证
9.2.3 测试需求模型、分析模型和设计模型
9.2.4 测试源代码
9.2.5 整体测试系统
9.2.6 用户测试
9.3 从测试用例到缺陷
9.4 你学到了些什么
9.5 复习题
第10章 将它们装配在一起:软件过程
10.l 为什么面向对象开发会如此之不同
10.2 什么是软件过程
10.3 为什么会需要软件过程
10.4 从瀑布/顺序开发
10.5 ……到迭代开发
10.6 ……和增量开发
10.7 本书中给出的开发过程
10.8 面向对象软件过程的过程模式
10.9 统一过程
10. 10 其他过程
10.10. 1 极限编程
10. 10. 2 微软解决方案框架
10.10. 3 OPEN过程
10.10.4 催化过程
10. 11 何时使用对象
10.12 何时不使用对象
10.13 你学到了些什么
10. 14 复习题
第11章 如何继续学习过程
11. 1 P2K环境
11. 1. 1 新的软件策略
11.1. 2 使能技术
11. 1. 3 领先的开发技术
11. l.4 现代软件过程
11.1. 5 对象编程语言
11. 1. 6 Internet开发语言
11. 2 适于特定职位的技能
11.2. 1 业务分析员
11. 2. 2 IT高级经理
11. 2.3 对象建模员
11. 2.4 持久建模员
11. 2.5 持久管理员
11.2. 6 程序员
11.2. 7 项目经理
11.2. 8 质保工程师
11.2.9 软件架构师
11. 2.10 测试工程师
11. 3 继续整个学习过程
11. 3.l 参加介绍性的培训
11.3.2 获得第一手经验
11.3. 3 获得指导
11.3. 4 以学习小组进行工作
11.3.5 阅读、阅读、再阅读
11.3.6 参加高级培训
11. 4 你学到了些什么
11. 5 告别演说
词汇表
参考文献


教学资源推荐
作者: 刘小松 等编著
作者: 赵翀 孙宁 编著 贲可荣 主审
作者: Bob Hughes;Mike Cotterell
作者: 主编 宫云战 参编 赵瑞莲,张威,王雅文,张俞炜
参考读物推荐
作者: Edward Kit
作者: [美] 马特·魏斯费尔德(Matt Weisfeld)著
作者: (美)Connie U.Smith,Lloyd G.Williams
作者: (美)John McGarry,David Card,Cheryl Jones等