返回首页
苏宁会员
购物车 0
易付宝
手机苏宁

服务体验

店铺评分与同行业相比

用户评价:----

物流时效:----

售后服务:----

  • 服务承诺: 正品保障
  • 公司名称:
  • 所 在 地:
本店所有商品

  • [正版]敏捷开发(纪念版) 罗伯特.C.马丁 清华大学出版社 软件工程开发项目管理敏捷开发
  • 新商品上架
    • 作者: [美]罗伯特.C.马丁著
    • 出版社: 清华大学出版社
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    苏宁商家

    商家:
    句字图书专营店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    商品分类

    商品参数
    • 作者: [美]罗伯特.C.马丁著
    • 出版社:清华大学出版社
    • 开本:16开
    • ISBN:9782160780710
    • 版权提供:清华大学出版社

     书名:  敏捷开发(纪念版)
     出版社:  清华大学出版社
     出版日期  2021
     ISBN号:  9787302581901

    《敏捷开发(纪念版)》介绍敏捷原则、模式和实践,包含4部分38章24个附录,首先概述敏捷开发、包含6个主题,分别为敏捷实践、极限编程、规划、测试、重构和编程活动。接下来介绍敏捷设计,解释了5个设计原则、UML及其应用,包括状态图、对象图、用例图、序列图和类图,并以一个完整的咖啡机编程案例来介绍具体的用法。通过薪水支付系统Payroll的实战练习,书中呈现了敏捷开发的整个过程及其实用价值。

    《敏捷开发(纪念版)》适合真正想要通过敏捷方法来提升软件开发技能以及及时交付软件价值的所有读者阅读和参考,尤其适合开发、管理和业务分析岗位的人员学习。通过本书的阅读,读者还可以了解UML、设计模式、面向对象设计原则以及包括极限编程在内的敏捷方法。

    罗伯特·C.马丁

    (Robert C. Martin)

    业内人士尊称的“鲍勃大叔”(Uncle Bob),是国际知名的软件工程师和导师,一位有五十多年健康编码经验的程序员。cleancoders.com联合创始人和UncleBob咨询公司创始人,主要提供软件咨询、技能培训和视频教学服务。

    他在专业技术领域具有较深的造诣。除了担任C++Report杂志的总编辑,他还发表了大量有影响力的文章,受邀在许多国际性软件大会上发表演讲。他是SOLID五大原则的奠基人,是《敏捷宣言》联合签署人并担任过敏捷联盟第一届主席。他擅长的主题有软件匠艺、敏捷软件开发和测试驱动开发等。

    马丁是个终生学习者,52年出生的他,还在考飞行驾照。

    米咖·马丁

    (Micah Martin)

    软件工程师、咨询顾问、培训师,擅长的领域有面向对象设计原则与模式、敏捷软件开发实践。他是开源项目FitNesse项目的创始人和开发总监。他著述颇丰,同时也是很多软件大会的演讲嘉宾。

    《敏捷开发(纪念版)》通过丰富的案例来诠释了敏捷开发和敏捷设计的基础知识,介绍了UML模型如何转为实际可用的C#代码。在总体上概述敏捷运动之后,展示了敏捷实践过程,并通过大量有价值的源代码实例来展示了敏捷设计、开发与实践。

    通过本书的阅读,读者可以掌握以下主题:

    ●    12个敏捷原则和14个极限编程实践

    ●    技术预研,故事拆分,速率,迭代和版本规划

    ●    测试驱动开发、测试先行设计以及验收测试

    ●     单元测试与重构

    ●     结对编程

    ●     敏捷设计与设计异味

    ●    5类UML图及其高效用法

    ●    面向对象的软件包设计及其设计模式

    ●    如何综合运用所有要点来实现一个真实的项目

    详细目录

    第Ⅰ部分 敏捷开发

    第1章 敏捷实践 002

    敏捷联盟 003

    个人和互动优先于过程和工具 004

    可以工作的软件优先于详尽的文档 004

    客户合作优先于合同谈判 005

    应对变化优先于遵循计划 006

    原则 007

    小结 009

    参考文献 010

    第2章 极限编程概述 011

    极限编程实践 011

    完整的团队 011

    用户故事 012

    短的周期 012

    验收测试 013

    结对编程 014

    测试驱动开发 015

    集体所有权 015

    持续集成 016

    可持续的开发速度 016

    开放的工作空间 017

    规划游戏 017

    简单设计 018

    重构 019

    隐喻 019

    小结 020

    参考文献 021

    第3章 计划 022

    初探 023

    技术预研、故事拆分和速率 023

    发布计划 024

    迭代计划 024

    定义“完成” 025

    任务计划 025

    迭代 027

    跟踪 027

    小结 028

    参考文献 029

    第4章 测试 030

    测试驱动开发 030

    验收测试 035

    意外获得的架构 037

    小结 037

    参考文献 038

    第5章 重构 039

    素数产生程序:一个简单的重构示例 040

    重构 043

    最后检查 049

    小结 053

    参考文献 054

    第6章 一次编程实践 055

    保龄球比赛 056

    小结 106

    保龄球规则概述 107

    第Ⅱ部分 敏捷设计

    臭味和原则 110

    参考文献 110

    第7章 什么是敏捷设计 111

    设计臭味 112

    设计的臭味:软件腐化的气味 112

    僵化 113

    脆弱 113

    顽固 113

    粘滞 114

    不必要的复杂 114

    不必要的重复 114

    晦涩 115

    为什么软件会腐化 115

    Copy程序 116

    一个熟悉的场景 116

    Copy程序的敏捷设计 120

    小结 122

    参考文献 123

    第8章 单一职责原则(SRP) 124

    定义职责 126

    分离耦合的职责 127

    持久化 128

    小结 128

    参考文献 129

    第9章 开/关原则(OCP) 130

    描述 131

    Shape应用程序 133

    违反OCP 133

    遵循OCP 136

    预测变化和“贴切的”结构 138

    放置“钩子” 139

    使用抽象获得显式封闭性 140

    使用“数据驱动”的方法获取

    封闭性 141

    小结 142

    参考文献 143

    第10章 里氏替换原则(LSP) 144

    违反LSP的情形 145

    更微妙的违反情形 147

    一个实际的例子 154

    用提取公共部分的方法代替继承 158

    启发式规则和习惯用法 162

    小结 162

    参考文献 163

    第11章 依赖倒置原则(DIP) 164

    层次化 165

    倒置的接口所有权 166

    依赖于抽象 167

    一个简单的DIP例子 168

    找出底层抽象 169

    熔炉示例 171

    小结 172

    参考文献 173

    第12章 接口隔离原则(ISP) 174

    接口污染 174

    分离客户端就是分离接口 176

    类接口和对象接口 177

    通过委托来分离接口 178

    使用多重继承隔离接口 179

    ATM 用户界面的例子 180

    小结 187

    参考文献 187

    第13章 C#程序员UML概述(C#语言) 188

    类图 191

    对象图 193

    顺序图 193

    协作图 194

    状态图 195

    小结 196

    参考文献 196

    第14章 使用UML 197

    为什么建模 197

    为什么要建软件模型 198

    写代码之前是否应该做好详细设计 198

    有效使用UML 199

    与他人交流 199

    脉络图 201

    项目结束文档 202

    要保留的和要丢弃的 203

    迭代式改进 204

    行为优先 204

    检查结构 206

    想象代码 208

    图示的演化 209

    何时以及如何绘制图示 210

    何时要画图,何时不要画图 210

    CASE工具 211

    那么,文档呢 212

    小结 212

    第15章 状态图 214

    基础知识 214

    特定事件 216

    超状态 217

    初始伪状态和结束伪状态 218

    使用FSM图示 219

    小结 220

    第16章 对象图 221

    即时快照 221

    主动对象 223

    小结 227

    第17章 用例 228

    写用例 229

    备选流程 230

    其他东西呢 230

    用例图 231

    小结 232

    参考文献 232

    第18章 顺序图 233

    基础知识 234

    对象、生命线、消息及其他 234

    创建和析构 235

    简单循环 236

    时机和场合 237

    高级概念 240

    循环和条件 240

    耗费时间的消息 241

    异步消息 243

    多线程 248

    主动对象 249

    向接口发送消息 250

    小结 251

    第19章 类图 252

    基础知识 253

    类 253

    关联 253

    继承 254

    类图示例 255

    细节 258

    类的衍型 258

    抽象类 259

    属性 260

    聚合 260

    组合 261

    多重性 263

    关联衍型 263

    嵌套类 264

    关联类 265

    关联修饰符 266

    小结 266

    参考文献 266

    第20章 咖啡的启示 267

    Mark IV型专用咖啡机 267

    规格说明书 268

    常见的丑陋方案 271

    虚构的抽象 273

    改进方案 275

    实现抽象模型 279

    这个设计的好处 295

    面向对象过度设计 303

    参考文献 304

    第21章 命令模式和主动对象模式 310

    简单的命令模式 311

    事务操作 313

    实体上的解耦和时间上的解耦 314

    时间上的解耦 315

    UNDO()方法 315

    主动对象模式 316

    小结 322

    参考文献 322

    第22章 模板方法模式和策略模式:继承和委托 323

    模板方法模式 324

    模式滥用 327

    冒泡排序 328

    策略模式 332

    小结 338

    参考文献 338

    第23章 外观模式和中介者模式 339

    外观模式 339

    中介者模式 340

    小结 343

    参考文献 343

    第24章 单例模式和单状态模式 344

    单例模式 345

    好处 347

    代价 347

    单例模式实战 348

    单状态模式 350

    好处 351

    代价 352

    单状态模式实战 352

    小结 358

    参考文献 359

    第25章 空对象模式 360

    描述 360

    小结 363

    参考文献 364

    第26章 案例学习:Payroll系统的第一轮迭代 365

    规格说明书 366

    基于用例进行分析 367

    添加新员工 368

    删除员工 369

    提交考勤卡 370

    提交销售凭证 370

    提交工会服务费 371

    更改员工信息 372

    薪水支付日 374

    反思:我们从中学到了什么 376

    薪水支付类别抽象 376

    支付薪水时间表抽象 377

    第Ⅲ部分 案例学习:薪水支付系统Payroll

    支付方式 378

    工会所属关系 378

    小结 379

    参考文献 380

    第27章 案例学习:Payroll系统

    实现 381

    事务 381

    添加员工 382

    Payoll系统的数据库 384

    删除雇员 388

    考勤卡、销售凭证和服务费用 390

    更改员工信息 399

    更改员工类别 403

    我犯了什么晕? 409

    支付员工薪水 413

    我们是否希望开发人员来做商业决策? 415

    按月薪结算的员工支付薪水 415

    支付小时工的薪水 418

    主程序 431

    数据库 432

    小结 433

    关于本章 433

    参考文献 434

    第Ⅳ部分 案例学习:打包Payroll系统

    第28章 包和组件的设计原则 436

    包和组件 436

    组件的内聚性原则:粒度 437

    重用-发布等价原则(REP) 438

    共同重用原则(CRP) 439

    共同封闭原则(CCP) 440

    组件内聚性小结 441

    组件耦合原则:稳定性 441

    无环依赖原则(ADP) 441

    稳定依赖原则(SDP) 447

    稳定抽象原则(SAP) 452

    小结 456

    第29章 工厂模式 457

    依赖问题 460

    静态类型与动态类型 461

    可替换的工厂 462

    对测试支架使用对象工厂 463

    工厂模式的重要性 465

    小结 465

    参考文献 465

    第30章 案例学习:Payroll系统的包分析 466

    组件结构和符号 467

    应用共同封闭原则(CCP) 469

    应用发布等价原则(REP) 471

    耦合和封装 474

    度量指标 475

    在薪水支付系统中使用这些度量 477

    对象工厂 479

    重新思考内聚的边界 483

    最终的包结构 483

    小结 485

    参考文献 485

    第31章 组合模式 487

    组合命令 489

    多重性还是非多重性 490

    小结 490

    第32章 观察者模式 491

    数字时钟 492

    观察者模式 512

    模型 513

    观察者模式与面向对象设计原则 514

    小结 514

    参考文献 515

    第33章 抽象服务器、适配器和桥接模式 516

    抽象服务器模式 517

    适配器模式 518

    类形式的适配器 519

    调制解调器问题、适配器和里氏替换原则 520

    桥接模式 524

    小结 527

    参考文献 527

    第34章 代理模式和TDG模式:管理第三方API 528

    代理模式 529

    代理购物车应用 534

    小结 550

    处理数据库、中间件以及其他第三方

    接口 550

    TDG模式 553

    测试和内存TDG 561

    测试DbGateway 562

    小结 568

    参考文献 568

    第35章 访问者模式 569

    访问者模式 570

    非循环访问者模式 575

    使用访问者模式 581

    访问者模式的其他用途 589

    装饰者模式 589

    扩展对象模式 596

    小结 610

    参考文献 610

    第36章 状态模式 611

    嵌套语句switch/case 612

    内部作用域内有效的状态变量 615

    测试动作 616

    代价和好处 616

    迁移表 617

    使用表解释 618

    代价和收益 619

    状态模式 620

    状态模式和策略模式 624

    使用状态模式的代价和好处 624

    SMC(状态机编译器) 625

    SMC生成的Turnstile.cs以及其他

    支持文件 628

    代价和收益 634

    状态机的应用场合 634

    作为 GUI 中的高层应用策略 634

    GUI 交互控制器 636

    分布式处理 637

    小结 638

    参考文献 639

    第37章 案例学习:Payroll系统的数据库 640

    建立数据库 641

    代码设计中的一个缺陷 642

    增加雇员 644

    事务 658

    加载Employee对象 665

    还有什么工作? 680

    第38章 案例学习:Payroll系统的用户界面 681

    界面 683

    实现 684

    构建窗口 696

    Payroll的窗口 705

    真面目 720

    小结 720

    参考 721

    Rupert:Alpha项目 722

    附录A 两家公司的讽刺故事 722

    附录B 源码即设计 739

    “可是老兄,你说你去年就会完成这本书的。”距离1999年Claudia发出这一正当的抱怨,已经过去7年了,但我(Bob)(前言为两名作者共同写成,因而在“我”的后面指出了具体的作者名称,以示区分)觉得已经做出了补偿。我要经营一家咨询公司,做大量编码、培训、辅导和演讲工作,写文章、专栏和博客,更不用提还要养家糊口并享受大家庭的乐趣。所以,这期间写三本书(每两年一本)真的是一个巨大的挑战。但是,我乐在其中。

    敏捷开发是在需求快速变化的情况下快速开发软件的一种能力。为实现这种敏捷性,需使用能提供必要纪律和反馈的实践,需遵守保持软件灵活且易于维护的设计原则,需知道已证明能为特定问题权衡那些原则的设计模式。本书旨在将这三个概念整合成一个有机的整体。

    本书介绍了这些原则、模式与实践,然后通过多个案例来演示其实际运用。更重要的是,这些案例都不是“成品”。相反,它们是进行中的设计。你会看到设计人员犯错,观察到他们如何发现并最终纠正错误,会看到设计人员对一个难题苦思不得其解,并担心歧义和得失。总之,你看到的是设计实际在进行。

    2005年初,我(Micah)在一个小开发团队做事,当时要着手用C#来写一个.NET应用程序。项目要求采用敏捷开发实践,这正是我进入该项目的原因之一。虽然以前用过C#,但我最熟悉的还是Java和C++。

    当时没想过用.NET会有多大区别,事实证明确实如此。项目进行了两个月,我们发布了第一个版本。不是完整版本,只包含所有预期功能的一部分,但足够用。他们也真的在用。仅过了两个月,公司就从我们的开发收获了好处。管理层高兴,嚷着要雇更多人,启动更多项目。

    多年来一直出没于敏捷社区,我知道有许多敏捷开发人员能帮到我们。我给他们打了电话,请他们加入。最终,没有任何一个搞敏捷的人加入我们的团队。为什么?或许最重要的原因是我们用的是.NET。

    几乎所有敏捷开发人员都有Java,C++或Smalltalk的背景。但几乎没听说过有敏捷.NET程序员。我说要用.NET进行敏捷软件开发,我的那些朋友可能根本没有把我的话当真,或者他们就是不想和.NET扯上关系。这是一个大问题。而且,发生过好多次。

    为期一周的有关各种软件主题的课程使我能结识来自世界各地的开发人员。

    就各种软件主题讲授大约一周的课程,使我有机会接触来自世界各地有代表性的开发人员。许多学员都是.NET程序员,也有许多是Java或C++程序员。虽然不好听,但根据我的经验,.NET程序员通常比Java和C ++程序员要弱一些。显然,并非总是如此。但通过在课堂上反复观察,我只能得出这样的结论:.NET程序员在敏捷软件实践、设计模式和设计原则等方面通常要弱一些。据我观察,许多.NET程序员从未听说过这些基本概念。这种情况必须改变!

    我父亲Robert C. Martin于2002年出版了的《敏捷软件开发:原则、模式与实现》荣获了2003年Jolt大奖。那是本好书,受到许多开发人员的推崇。遗憾的是,它对.NET社区影响甚微。虽然书的内容同样适合.NET,但鲜有.NET程序员读过。

    我希望讲.NET的这一版能在.NET和开发社区其余部分之间建立起一座桥梁。希望程序员能读一读,了解构建软件的更优方式。希望他们开始使用更好的软件实践,创建更好的设计,提升.NET应用程序员的质量标准。希望.NET程序员不再比其他程序员弱。希望.NET程序员在软件社区取得更多话语权,就连Java开发人员也乐意加入一个.NET团队。

    写书的过程中,我经常纠结于要不要把我的名字放在一本.NET书的封面。这样会不会将我和.NET联系起来,会不会有不好的暗示?但最终我不再纠结。我是一名.NET程序员。不对!一名敏捷.NET程序员!我为此感到骄傲。

    关于本书

    20世纪90年代初,我(Bob)写了Designing Object-Oriented C++ Applications Using the Booch Method一书,是我的代表作,我对其影响和销量都很满意。其实你现在正在看的最开始就是想作为那本书的第3版,只是后来完全不是那么回事。原作内容在本书所剩无己,不超过3章,而且都进行了大幅修订。书的意图、精神和许多启发并没有改变。在该书问世后的十年里,我在软件设计和开发方面学到了很多。本书反映了我学到的东西。

    这是怎样的十年啊!该书是在互联网时代之前出版的。互联网问世后,需要掌握的缩写词数量大增。我们现在有了EJB、RMI、J2EE、XML、XSLT、HTML、ASP、JSP、ZOPE、SOAP、C#和.NET,另外还有设计模式、Java、Servelets和Application Servers。基本上,要使本书所有章节的内容保持“最新”是很难的。

    本书和Booch的关系

    1997年,Grady Booch(Grady Booch是统一建模语言(UML)的缔造者之一)邀请我帮忙写他那本大获成功的Object-Oriented Analysis and Design with Applications一书的第3版。我以前和Grady在一些项目上合作过,是其许多作品(包括UML)的热心读者和内容贡献者。所以,我高兴地接受了邀请,并请我的好友Jim Newkirk共同参与。

    接下来的两年,我和Jim为Booch写了许多章节,花在本书上的精力自然就少了。但是,我觉得Booch的书值得投入。另外,当时还在想本书反正只是第2版,所以并不是特别上心。如果我要写一些有份量的内容,我会写一些新的、不一样的。

    遗憾的是,Booch的书难产了。本来就很难在正常时间写书,在互联网泡沫的那段时间更是不太可能。Grady在Rational Software的工作更忙了,同时还忙于像Catapulse这样的风投企业。所以,项目陷入停顿。最终,我问Grady和Addison-Wesley出版社能不能把我和Jim写的章节放到本书。他们慷慨地同意了。本书的几个案例分析和UML章节就是这么来的。

    极限编程的影响

    1998年末,极限编程(XP)崭露头角,挑战我们对于软件开发的传统观念。是应该在写任何代码之前创建大量UML图,还是避免一切形式的图,直接写大量代码?是应该写许多说明性的文档来描述设计,还是使代码更具说明性,从而无需辅助文档?要结对写程序吗?写生产代码前要先写好测试代码吗?我们到底应该怎么做?

    这个变革来得恰是时候。20世纪90年代中期,Object Mentor帮助许多公司解决OO(面向对象)设计和项目管理问题。我们帮这些公司完成其项目。在这个过程中,我们向团队灌输了自己的态度与实践。遗憾的是,这些东西没有形成书面记录。相反,只是从口头上传达给了客户。

    1998年,我意识到需要把我们的过程和实践记录下来,以便更好地向客户传达。所以我在C++ Report上写了许多关于这一过程的文章(有4篇文章。前三篇是“Iterative and Incremental Development”(I, II, III)。最后一篇是“C.O.D.E Culled Object Development process”)。但是,这些文章没有达到目标。信息量大,有时还十分有趣,但它们没有将我们在项目中采用的实践和态度整理成文,面是对数十年来我形成的价值观的一种无意识的折衷。最后是Kent Beck提醒了我。

    本书和Kent的关系

    1998年末,正当我为Object Mentor过程的整理而烦恼时,Kent和Beck在极限编程(XP)方面的成果让我眼前一亮。这些成果散见于Ward Cunningham(沃德·坎宁安,Wiki概念的发明者,设计模式和敏捷软件方法的先驱之一)的wiki(http://c2.com/cgi/wiki包含涉及广泛主题的大量文章。有数百上千的作者。有人说,也就Ward Cunningham才能用几行Perl代码发起一次社会革命),和其他许多人的作品混在一起。尽管如此,作为一个有心人,我还是掌握了Kent的要点。感兴趣的同时,我也有了一些疑虑。极限编程的某些东西契合我的开发过程目标。但另一些东西,比如缺乏一个明确的设计阶段,却让我疑惑。

    我和Kent处于截然不同的软件环境。他是公认的Smalltalk顾问,我是公认的C++顾问。这两个世界相互很难沟通,存在像库恩范式(1995年到2001年任何可靠的学术著作采用的都肯定是“库恩”(Kuhnian)一词。它是指托马斯·库恩(Thomas S. Kuhn)所著的《科学革命的结构》一书(芝加哥大学出版社1962年出版)。库恩认为科学不是通过新知识的线性积累进步,而是经历周期性的革命,称“范式转移”。)那么大的鸿沟。

    其他时候我绝不会邀请Kent为C++ Report撰稿。但是,由于我们对于过程的看法取得了一致,所以语言的鸿沟不再重要。1999年2月,我在慕尼黑的OOP大会上见到了Kent。我当时在讲OOD的原则,他就在对面的房间里讲XP。由于没法听到他的演讲,我在午餐时找到了Kent。我们讨论了XP,我提出了让他为C++ Report撰稿的请求。这是一篇很棒的文章,讨论了Kent如何和一名同事花一小时左右的时间在某个live system中进行一次全面的设计更改。

    接着几个月,我慢慢梳理出了自己对XP的忧虑。最担心的是如何采纳一个没有明显前期设计阶段的过程。感觉自己好像卡在了这里。对于我的客户及其整个行业,我难道不应该告诉他们值得花时间在设计上吗?

    最后,我终于意识到自己都没有真正注重过这样的一个阶段。即使在我写的关于设计、Booch图和UML图的所有文章和书里,都总是将代码作为验证图是否有意义的一种方式来使用。在我的所有客户咨询中,我会花一两个小时帮客户画图,再指导他们通过代码来利用这些图。我意识到虽然XP关于设计的说法有点陌生,有点库恩(如果在文章中两次提到库恩的话,论文的可信度更高),但其背后的实践我本来就熟悉。

    我对XP的其他担心较容易解决。我私底下一直拥护结对编程。XP使我能光明正大地和伙伴一起编程。重构、持续集成、在客户现场工作……所有这些对我来说都很容易接受。它们很接近我向客户建议的工作方式。

    XP的一个实践对我来说是新的发现。第一次听说“测试驱动开发”(Test-driven development,TDD)(Kent Beck著,中文版《实战测试驱动开发》)时可能感觉没什么:写生产代码前先写好测试用例,写所有生产代码的目的都是使失败的测试用例通过测试。但是,我对这种开发模式所带来的深远影响始料未及。该实践彻底改变了我写软件的方式:变得更好了。

    所以,1999年秋,我确信 Object Mentor 应采纳 XP 作为其选择的过程,并且我应该放弃写自己的过程的想法。Kent已经很好地归纳了XP的实践与过程,我的小小尝试与之相比不值一提。

    .NET

    各大企业正在进行一场战争,目的是争取你的效忠。它们认为,只要拥有了语言,就拥有了程序员以及雇用这些程序员的公司。

    这场战争的第一个争夺点是Java。Java是第一个由大公司为赢得程序员关注而创建的语言,并取得了极大成功。Java在软件社区深得人心,基本上是现代多层IT应用程序的事实上的标准。

    相应的一个还击来自IBM,它通过Eclipse开发环境夺走了很大一块Java市场。Microsoft技术精湛的开发人员也不甘落后,他们提供了常规意义上的.NET和最为特殊的C#。

    令人惊讶的是,Java和C#很难区分。两种语言语义一致,语法也相似,以至于许多代码段没有差别。虽然Microsoft在技术创新上差点意思,但它赶超别人并取得最终胜利的能力还是相当不错的。

    本书第一版采用Java和C++作为编码语言。本书则完全采用C#和.NET平台。不要把这当成是背书。这场战争我们不选边站。事实上,大公司为争夺程序员的关注而发起的战争没有太大意义。未来几年一旦出现更好的语言,程序员的心思立即就会发生转移。

    本书之所以出.NET版,自然是为了方便.NET读者。虽然书中的原则、模式与实践和语言无关,但案例分析不是。.NET程序员看.NET的案例分析更舒服,Java程序员看Java的例子更愉快。

    魔鬼就在细节里

    本书包含大量.NET代码。希望你能仔细读代码,因为代码在很大程度上就是本书的重点。代码具现了本书要表达的意思。

    本书采用固定写作模式:大小不一的一系列案例分析。有的非常小,有的则需要用几章来讲解。每个案例分析都有一些前置材料,描述了该案例分析要用到的面向对象设计原则和模式。

    本书首先讨论开发实践和过程,其中穿插了许多小的案例分析和例子。然后开始讨论设计和设计原则,接着讨论一些设计模式,对包进行管控的更多设计原则,以及更多模式。所有这些主题都伴随有相应的案例分析。

    所以,要做好读一些代码和研究一些UML图的准备。本书技术性很强,它要传授的经验教训如同恶魔一样隐藏在细节里(细节决定成败)。

    本书的结构

    本书包含4部分38章和2个附录。

    第Ⅰ部分:敏捷开发。本部分描述敏捷开发的概念。首先展示敏捷联盟宣言,概述了极限编程(XP),然后通过许多小的案例分析来阐述一些单独的XP实践,尤其是对设计和代码编码方式有影响的那些。

    第Ⅱ部分:敏捷设计。本部分讨论面向对象软件设计,包括它的定义,对复杂性进行管理的问题和技术,以及面向对象类设计的原则。本部分最后用几章描述了UML的一个实用子集。

    第Ⅲ部分:案例学习:Payroll系统。本部分描述面向对象设计和一个简单的批处理Payroll系统的C++实现。前几章描述本案例分析遇到的设计模式。最后一章是完整的案例分析,是本书最大和最完整的一个。

    第Ⅳ部分:案例学习:打包Payroll系统。本部分首先描述面向对象包设计的原则,然后通过增量打包上一部分的类来演示这些原则。最后几章描述了Payroll应用程序的数据库和UI设计。

    附录A:两家公司的讽刺故事

    附录B:Jack Reeves的“什么是软件”一文。

    如何使用本书

    如果你是开发人员,请将本书从头读到尾。本书主要为开发人员而写,包含以敏捷方式开发软件所需的资讯。先学习实践,然后是原则,然后是模式,然后是把所有这些结合起来的案例分析。整合所有这些知识将有助于你完成项目。

    如果你是管理人员或业务分析师,请阅读第Ⅰ部分“敏捷开发”。第1章~第6章深入讨论了敏捷原则和实践,从需求到计划,再到测试、重构和编程。本部分将指导你建立团队和管理项目。

    如果想学习UML,请先阅读第13章~第19章,然后阅读第Ⅲ部分“案例学习:薪水支付系统Payroll”的全部章节。这将帮助你在UML的语法和使用方面打下良好基础,同时帮助你在UML和C#之间转换。

    如果想学习设计模式,请阅读第Ⅱ部分“敏捷设计”,从而先学习设计原则。然后阅读第Ⅲ部分“案例学习:薪水支付系统Payroll”和第Ⅳ部分“案例学习:打包Payroll系统”。它们定义了所有模式,并展示了它们在典型情况下的使用。

    如果想学习面向对象设计原则,请阅读第Ⅱ部分“敏捷设计”和第Ⅲ部分“案例学习:薪水支付系统Payroll”和第Ⅳ部分“案例学习:打包Payroll系统”。它们描述了面向对象设计原则并展示了如何使用它们。

    如果想学习敏捷开发方法,请阅读第Ⅰ部分“敏捷开发”。本部分描述了敏捷开发的需求、计划、测试、重构和编程。

    如果想找乐子,请阅读附录A“两家公司的讽刺故事”。

     

    1
    • 商品详情
    • 内容简介

    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购