fbpx

[email protected]

购物车

 查看订单

  • 我的帐户
东东购 | EasternEast
  • 中文书店
    • 畅销排行榜
      • 小说 畅销榜
      • 童书 畅销榜
      • 外语畅销榜
      • 管理畅销榜
      • 法律畅销榜
      • 青春文学畅销榜
    • 热门分类
      • 社会小说
      • 成功/励志 畅销榜
      • 人物传记
      • 大陆原创
      • 绘本童书
      • 影视小说
    • 文学推荐
      • 文集
      • 戏剧
      • 纪实文学
      • 名家作品
      • 民间文学
      • 中国现当代随笔
    • 新书热卖榜
      • 小说 新书热卖榜
      • 青春文学 新书热卖榜
      • 童书 新书热卖榜
      • 管理 新书热卖榜
      • 成功/励志 新书热卖榜
      • 艺术 新书热卖榜
  • 精选分类
    • 小说
    • 保健养生
    • 烹饪/美食
    • 风水/占卜
    • 青春文学
    • 童书
    • 管理
    • 成功/励志
    • 文学
    • 哲学/宗教
    • 传记
    • 投资理财
    • 亲子家教
    • 动漫/幽默
    • 法律 Legal
    • 经济 Economics
    • 所有分类
  • 关于东东
  • 帮我找书
搜索
首页计算机/网络软件工程/开发项目管理面向对象软件工程

面向对象软件工程

原版是美国面向对象软件工程领域的权威教材,精心翻译出版。

作者:David C. Kung 著 牟永敏 邢颖 译 出版社:清华大学出版社 出版时间:2017年01月 

ISBN: 9787302460947
年中特卖用“SALE15”折扣卷全场书籍85折!可与三本88折,六本78折的优惠叠加计算!全球包邮!
trust badge

EUR €58.99

类别: 软件工程/开发项目管理 SKU:5d8410715f984910454052b3 库存: 有现货
  • 描述
  • 评论( 0 )

描述

开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302460947丛书名: 清华计算机图书译丛

编辑推荐
本书介绍了建模与设计、UML、模式、基于测试的软件开发、质量保证、配置管理、全生命周期的敏捷原理。作者讲述步骤清晰,深入浅出,在理论介绍过程中提供了大量实例,便于读者理解、实践。内容包含过去十年间软件工程发展的很多方面,既有在美国以及全球的大学和公司里讲授的课程,也有行业内外软件工程项目的应用素材。从面向对象方法学出发,对软件工程进行重新演绎,全面、系统、清晰地介绍了面向对象软件工程的基本概念、原理、方法和工具,通过实例说明了面向对象软件开发的整个过程,是一部值得推荐的经典之作。 
内容简介
第1部分引言与系统工程。这部分由前3章构成,它提供了观察软件生命周期行为的视角。尤其是,它覆盖了软件过程模型、方法学的概念、过程与方法的区别以及系统工程。
第2部分分析和体系结构设计。这部分介绍了计划阶段的行为,包括需求提取、领域建模和架构设计。
第3部分交互式系统的建模和设计。这部分主要处理建模与交互系统设计问题,共包括6章。这6章介绍了如何根据需求识别出用例、如何对参与者系统交互以及对象交互行为进行建模和设计、如何应用职责分配模式、如何得到作为设计蓝本的设计类框图,以及如何设计用户交互界面。
第4部分其他类型系统的建模和设计。这部分包括3章,每章介绍一种类型系统的建模与设计。具体来说,第13章介绍事件驱动系统的建模与设计;第14章介绍迁移系统的建模与设计;第15章介绍基于业务规则的系统的建模与设计。
第5部分应用情景特定模式。这部分由两章构成,主要介绍如何应用情景特定模式。其中使用了一个案例分析,即状态图编辑器的设计来帮助理解这个过程。
第6部分实现和质量保证。这部分包括3章,包括实现时要考虑的问题、软件质量保证的概念和行为以及软件测试。
第7部分维护和配置管理。这部分包括两章,内容覆盖了软件维护与软件配置管理。
第8部分项目管理和软件安全。本书的*后一部分由两章构成,一章介绍软件项目管理,另一章介绍软件安全,包括涉及安全软件系统的建模与设计的生命周期行为。
目  录

目录

第1部分引言与系统工程

第1章引言3

1.1什么是软件工程3

1.2为什么要用软件工程4

1.3软件生命周期行为5

1.3.1软件开发过程5

1.3.2软件质量保证8

1.3.3软件项目管理9

1.4面向对象的软件工程10

1.4.1面向对象的建模和设计

语言10

1.4.2面向对象的开发

过程10

1.4.3面向对象的开发

方法11

1.4.4OO会取代传统的

方法吗11

1.5软件工程和计算机科学11

小结12

深入阅读12

章节复习问题13

练习13

第2章软件过程和方法14

2.1系统开发的挑战14

2.2软件过程15

2.3瀑布模型的优势和问题16

2.4软件开发是一个险恶问题16

2.5软件过程模型17

2.5.1原型过程18

2.5.2演化过程18

2.5.3螺旋模型18

2.5.4统一过程19

2.5.5个人软件过程20

2.5.6团队软件过程24

2.5.7敏捷过程26

2.6软件开发方法30

2.6.1过程和方法的区别30

2.6.2方法的好处31

2.6.3结构化方法32

2.6.4经典的面向对象

方法32

2.7敏捷方法32

2.7.1动态系统开发

方法(DSDM)34

2.7.2Scrum35

2.7.3特征驱动的开发35

2.7.4极限编程36

2.7.5敏捷还是计划驱动36

2.8本书中的过程和方法一览37

小结41

深入阅读41

章节复习问题42

练习42

第3章系统工程43

3.1什么是系统43

3.2什么是系统工程44

3.3系统需求定义47

3.3.1识别业务需求47

3.3.2定义系统需求48

3.4系统结构设计48

3.4.1系统分解49

3.4.2需求分配51

3.4.3结构设计图52

3.4.4子系统功能和接口规

格说明55

3.5子系统开发56

3.5.1面向对象的上下文图56

3.5.2面向对象的上下文图

的用途57

3.5.3工程团队的协作58

3.6系统集成、测试和部署58

3.7系统配置管理58

小结60

深入阅读60

章节复习问题60

练习60

第2部分分析和体系结构设计

第4章获取软件需求65

4.1什么是需求获取65

4.2获取需求的重要性67

4.3获取需求的挑战67

4.4需求的类型68

4.5获取需求的步骤69

4.5.1收集信息70

4.5.2构建分析模型73

4.5.3获取需求和约束74

4.5.4需求规格标准77

4.5.5进行可行性研究77

4.5.6审查需求规格说

明书77

4.6应用敏捷原则79

4.7需求管理和工具80

小结81

深入阅读81

章节复习问题81

练习82

第5章领域建模84

5.1什么是领域建模84

5.2为什么要进行领域建模85

5.3面向对象和类图85

5.3.1外延定义和意向

定义85

5.3.2类和对象86

5.3.3对象和属性87

5.3.4关联88

5.3.5多重性和角色89

5.3.6聚合90

5.3.7继承90

5.3.8继承和多态91

5.3.9关联类91

5.4领域建模的步骤93

5.4.1收集应用领域信息94

5.4.2头脑风暴94

5.4.3对头脑风暴结果

分类95

5.4.4领域模型可视化98

5.4.5领域建模审查

清单102

5.5综合103

5.6领域建模的方针105

5.7应用敏捷原则106

5.8领域建模的工具支持107

小结108

深入阅读109

章节复习问题109

练习109

第6章架构设计111

6.1什么是架构设计111

6.2架构设计的重要性112

6.3架构设计过程112

6.3.1确定架构设计

目标113

6.3.2确定系统类型114

6.3.3应用架构样式117

6.3.4进行定制的架构

设计124

6.3.5明确子系统功能和

接口124

6.3.6审查架构设计125

6.4架构样式和包图125

6.5应用软件设计准则126

6.5.1什么是软件设计

准则127

6.5.2为改变而设计127

6.5.3关注点分离128

6.5.4信息隐藏129

6.5.5高内聚129

6.5.6低耦合129

6.5.7保持简单和直接130

6.6架构设计的方针131

6.7架构设计和设计模式131

6.8应用敏捷原则132

小结132

深入阅读132

章节复习问题133

练习133

第3部分交互式系统的建模和设计

第7章从需求获取用例137

7.1什么是参与者137

7.2什么是用例138

7.3业务过程、操作和活动138

7.4从需求获取用例的步骤140

7.4.1识别用例140

7.4.2明确用例范围146

7.4.3用例上下文可

视化147

7.4.4检查用例规约151

7.4.5将用例分配给

迭代152

7.5导出用例的方针153

7.6应用敏捷原则155

7.7用例建模的工具支持155

小结157

深入阅读157

章节复习问题157

练习158

第8章参与者系统交互建模159

8.1什么是参与者系统交互

建模159

8.2参与者系统交互建模的

重要性160

8.3参与者系统交互建模的

步骤160

8.3.1初始化一个两列

的表161

8.3.2明确参与者系统交互

的步骤161

8.3.3检查参与者系统交互

规约161

8.4明确可替换的流162

8.5使用用户界面原型163

8.6不要显示异常处理166

8.7用例的先决条件和后置

条件166

8.8包含其他用例167

8.9用其他用例继续167

8.10常见问题168

8.11应用敏捷原则170

小结170

深入阅读171

章节复习问题171

练习171

第9章对象交互建模172

9.1什么是对象交互建模172

9.2UML顺序图173

9.2.1概念和表示法173

9.2.2展示类的实例173

9.2.3顺序图说明174

9.2.4顺序图用于分析和

设计176

9.2.5正确使用表示

方法178

9.3对象交互建模的步骤179

9.3.1收集业务过程的

信息180

9.3.2识别非普通步骤180

9.3.3为非普通步骤书写

场景181

9.3.4构建场景表183

9.3.5怎么写场景183

9.3.6从场景表得到顺

序图188

9.3.7对象交互建模检查

清单194

9.4应用敏捷原则195

9.5对象交互建模的工具支持197

小结197

深入阅读197

章节复习问题197

练习198

第10章应用职责分配模式199

10.1什么是设计模式199

10.2为什么要用设计模式200

10.3情景特定模式和职责分配

模式200

10.4模式规约201

10.5控制器模式202

10.5.1激励示例202

10.5.2什么是控制器204

10.5.3应用控制器

模式204

10.5.4控制器的类型206

10.5.5跟踪记录用例

状态         206

10.5.6臃肿的控制器207

10.5.7比较不同的

设计208

10.5.8何时应用控制器

模式209

10.5.9使用控制器的

方针210

10.6专家模式210

10.6.1信息专家210

10.6.2应用专家模式211

10.6.3包含不止一个对象

的专家模式212

10.6.4何时应用专家

模式213

10.6.5使用专家模式的

方针213

10.7创建者模式213

10.7.1什么是创建者213

10.7.2应用创建者

模式214

10.7.3创建者模式的

优势215

10.7.4何时应用创建者

模式215

小结216

深入阅读216

章节复习问题216

练习217

第11章获取设计类图219

11.1什么是设计类图220

11.2设计类图的用途220

11.3获取设计类图的步骤221

11.3.1识别类221

11.3.2识别方法222

11.3.3识别属性224

11.3.4类之间的关系226

11.3.5识别关系226

11.3.6设计类图检查

清单228

11.4用包图组织类228

11.5应用敏捷原则230

11.6设计类图的工具支持231

小结231

深入阅读231

章节复习问题231

练习231

第12章用户接口设计232

12.1什么是用户接口设计232

12.2用户接口设计为什么

重要233

12.3图形用户接口组件234

12.3.1容器组件235

12.3.2输入、输出和信息

展示组件235

12.3.3使用GUI组件的

方针237

12.4用户接口设计过程237

12.4.1案例研究: 为状态

图编辑器设计用户

接口238

12.4.2识别系统主要显示

方式238

12.4.3生成布局设计

草图240

12.4.4明确交互行为242

12.4.5构建原型242

12.4.6用户评估用户接口

设计243

12.4.7用户接口设计检查

清单244

12.5设计用户支持功能245

12.6用户接口设计的方针245

12.7应用敏捷原则247

12.8用户接口设计的工具

支持247

小结248

深入阅读248

章节复习问题248

练习249

第4部分其他类型系统的建模和设计

第13章事件驱动系统的对象状态

建模253

13.1什么是对象状态建模253

13.2为什么要进行对象状态

建模254

13.3基本定义254

13.4对象状态建模的步骤255

13.4.1收集和分类状态

行为信息256

13.4.2构建领域模型来

展示上下文258

13.4.3构建状态迁移表260

13.4.4状态迁移表的

用途261

13.4.5将状态迁移表转换

为分析状态图262

13.4.6将分析状态图转换

为设计状态图264

13.4.7状态建模检查

清单265

13.5状态模式265

13.5.1约定的方法265

13.5.2什么是状态

模式266

13.5.3应用状态模式266

13.6实时系统的建模与设计269

13.6.1转换图式270

13.6.2定时状态机271

13.6.3中断处理272

13.7应用敏捷原则273

13.8对象状态建模的工具

支持274

小结274

深入阅读275

章节复习问题275

练习275

第14章转换型系统的活动建模278

14.1什么是活动建模278

14.2为什么使用活动建模279

14.3活动建模: 技术背景279

14.3.1流程图280

14.3.2佩特里网280

14.3.3数据流图281

14.4UML活动图282

14.5活动建模的步骤283

14.5.1识别活动和工

作流284

14.5.2产生一个初步活

动图286

14.5.3引入条件分支、分叉

和连接287

14.5.4精炼复杂的活动287

14.5.5活动建模审核检

查表288

14.6与其他图之间的关系288

14.7应用敏捷原则289

14.8活动建模的工具支持289

小结289

深入阅读290

章节复习问题290

练习290

第15章基于规则的系统的建模与

设计291

15.1什么是决策表292

15.2决策表的用处293

15.3系统化的决策表构造293

15.4渐进式决策表构造294

15.5检查所需的属性295

15.6决策表合并296

15.7根据决策表生成代码296

15.8应用解释器模式297

15.8.1定义业务规则

语法297

15.8.2在类图中表示

规则298

15.8.3构建解析器和变量

查找上下文299

15.8.4解释业务规则299

15.8.5动态更新规则300

15.8.6解释方法的

优点300

15.9在测试驱动开发中使用

决策表300

15.10决策树301

15.11应用敏捷原则301

小结302

深入阅读302

章节复习问题302

练习303第5部分应用情景特定模式

第16章应用模式来设计状态图

编辑器307

16.1应用模型的过程308

16.2案例研究: 状态图编

辑器310

16.3处理复杂的结构311

16.3.1表示递归的整体

部分结构311

16.3.2使用策略提供布局

选择315

16.3.3用迭代器访问复杂

的结构316

16.3.4通过访问者分析复

杂的结构317

16.3.5通过备忘录存储和

恢复对象状态320

16.4创建和构造复杂的对象321

16.4.1创建系列产品321

16.4.2构建大型的复杂

对象324

16.4.3通过享元重用

对象326

16.5图形用户界面的设计和

显示327

16.5.1跟踪编辑状态327

16.5.2响应编辑事件328

16.5.3转换接口330

16.5.4提供上下文相关的

帮助333

16.5.5使用装饰增强显示

能力335

16.6应用敏捷原则338

小结338

深入阅读338

章节复习问题339

练习339第17章应用模式来设计持久性

框架340

17.1直接访问数据库会出现的

问题340

17.2通过桥隐藏持久存储341

17.3将数据库请求封装为

命令344

17.4用远程代理隐藏网络

访问348

17.5用模板方法共享通用

代码351

17.6通过工厂方法检索不同

的对象353

17.7用原型减少类的数量355

17.8应用敏捷原则358

小结358

深入阅读358

章节复习问题358

练习358

第6部分实现和质量保证

第18章实现方面的考虑363

18.1编码标准363

18.1.1什么是编码

标准363

18.1.2为什么要建立

编码标准367

18.1.3代码审查清单367

18.1.4编码标准实施

准则367

18.2组织实现部件369

18.3根据设计生成代码370

18.3.1实现类和接口370

18.3.2从顺序图到方法

代码骨架370

18.3.3实现关联关系371

18.4给团队成员分配任务372

18.5结对编程372

18.6测试驱动开发373

18.6.1测试驱动开发的

工作流程373

18.6.2测试驱动开发的

优点375

18.6.3潜在问题375

18.7应用敏捷原则376

18.8对实现的工具支持376

小结376

深入阅读377

章节复习问题377

练习377

第19章软件质量保证379

19.1软件质量保证的益处379

19.2软件质量属性379

19.3质量测量和度量381

19.3.1质量测量和度量的

实用性382

19.3.2常规质量度量382

19.3.3对面向对象软件

重用传统度量387

19.3.4面向对象质量

度量387

19.4软件验证与确认技术389

19.4.1审查389

19.4.2走查390

19.4.3同行审查391

19.5生命周期中的验证和

确认392

19.6软件质量保证功能393

19.6.1过程和标准的

定义394

19.6.2质量管理396

19.6.3过程改进397

19.7应用敏捷原则398

19.8SQA的工具支持399

小结399

深入阅读400

章节复习问题400

练习400

第20章软件测试401

20.1什么是软件测试402

20.2为什么进行软件测试402

20.3传统的黑盒测试403

20.3.1功能性测试: 一个

例子403

20.3.2等价类划分404

20.3.3边界值分析405

20.3.4因果分析407

20.4传统的白盒测试407

20.4.1基路径测试408

20.4.2圈复杂度409

20.4.3流图测试覆盖

准则409

20.4.4测试循环410

20.4.5数据流测试411

20.4.6数据流测试的覆盖

准则412

20.4.7过程间数据流

测试412

20.5测试覆盖率413

20.6一个通用的软件测试

过程413

20.7面向对象的软件测试415

20.7.1基于用例的

测试415

20.7.2用ClassBench进行

对象状态测试416

20.7.3测试类的层次

结构418

20.7.4测试异常处理

能力419

20.8测试Web应用程序420

20.8.1Web应用程序测试

的面向对象模型420

20.8.2使用面向对象模型进

行静态分析421

20.8.3使用面向对象模型生

成测试用例421

20.8.4用httpUnit进行Web

应用程序测试422

20.9非功能性需求的测试422

20.9.1性能和压力

测试422

20.9.2安全测试423

20.9.3测试用户界面423

20.10生命周期中的软件测试424

20.11回归测试426

20.12什么时候停止

测试426

20.13应用敏捷原则427

20.14测试的工具支持427

小结427

深入阅读428

章节复习问题428

练习428

第7部分维护和配置管理

第21章软件维护433

21.1什么是软件维护433

21.2软件变化的因素434

21.3系统演化的雷曼定律434

21.4软件维护的类型435

21.5软件维护过程和活动435

21.5.1维护过程模型436

21.5.2理解程序437

21.5.3变更识别和

分析437

21.5.4配置变更控制439

21.5.5变更实施、测试和

交付440

21.6逆向工程440

21.6.1逆向工程工作流

440

21.6.2逆向工程的用途

440

21.6.3逆向工程: 案例

研究441

21.7软件再工程441

21.7.1再工程的目标441

21.7.2软件再工程的

过程442

21.7.3软件再工程: 案例

研究443

21.8软件维护的模式444

21.8.1用外观模式简化

客户端接口444

21.8.2用中介者模式简化

组件交互445

21.8.3软件维护的

模式445

21.9应用敏捷原则449

21.10软件维护的工具支持449

小结450

深入阅读450

章节复习问题450

练习450

第22章软件配置管理452

22.1软件生命周期的基准452

22.2什么是软件配置管理453

22.3为什么需要软件配置

管理454

22.4软件配置管理的功能454

22.4.1软件配置识别455

22.4.2软件配置变更

控制456

22.4.3软件配置审核457

22.4.4软件配置状态的

审计458

22.5敏捷项目中的配置管理458

22.6软件配置管理工具458

小结460

深入阅读460

章节复习问题460

练习461

第8部分项目管理和软件安全

第23章软件项目管理465

23.1项目组织466

23.1.1项目形式466

23.1.2团队结构467

23.2工作量评估方法468

23.2.1功能点方法468

23.2.2COCOMO Ⅱ模型

469

23.2.3Delphi评估方法

474

23.2.4敏捷评估474

23.3项目计划和调度476

23.3.1PERT图476

23.3.2Gantt图和人员

分配477

23.3.3敏捷规划478

23.4风险管理479

23.4.1风险识别479

23.4.2风险分析和优先级

划分480

23.4.3风险管理规划482

23.4.4风险解决和监控

482

23.5过程改进482

23.6应用敏捷原则484

23.7项目管理的工具支持484

小结485

深入阅读485

章节复习问题486

练习486

第24章软件安全488

24.1什么是软件安全489

24.2安全要求489

24.3安全软件设计原则490

24.4安全软件设计模式491

24.5软件安全的7个

实践493

24.6通过攻击树进行风险

分析494

24.7生命周期中的软件安

全性494

24.7.1规划阶段的安全

495

24.7.2迭代阶段的安全

501

24.8应用敏捷原则503

24.9软件安全的工具支持504

小结504

深入阅读505

章节复习问题505

练习506

附录A个人软件过程: 估计、规划和

质量保证507

A.1PSP中的工作量估计507

A.2PSP中的软件质量保证508

A.3设计和质量508

附录BJava技术510

B.1使用数据库连接510

B.1.1什么是数据库连接

510

B.1.2设置数据源510

B.1.3从程序中访问数据库

511

B.2使用Swing512

B.2.1用JFrame创建主

窗口512

B.2.2利用布局管理器

来布局组件513

B.2.3使用动作监听器

处理按钮事件515

B.2.4实现绘图功能515

B.3使用JSP517

B.3.1什么是JSP517

B.3.2JSP工作流517

B.3.3用JSP容器安装Web

服务器518

B.3.4使用JSP518

附录C软件工具521

C.1NetBeans521

C.2使用JUnit522

C.3在NetBeans中运行

JUnit525

C.4Emma覆盖工具525

C.5Cobertura覆盖工具526

C.6使用HttpUnit测试Web

应用程序527

C.6.1配置IDE以使用

HttpUnit527

C.6.2在HttpUnit中实现

测试用例528

C.7在NetBeans中使用cvs和

Subversion529

C.7.1创建CVS远程存

储库529

C.7.2在NetBeans中安装

Subversion530

C.7.3从存储库检出文件

531

C.7.4编辑源和查看变更

533

C.7.5查看文件状态533

C.7.6比较文件版本534

C.7.7合并存储库中的

更改534

C.7.8解决冲突534

C.7.9更新本地副本534

C.7.10提交本地文件到

存储库535     

C.7.11导入文件到存储库

535

附录D项目概要536

D.1汽车租赁系统536

D.2国家贸易展览服务系统536

D.3海外留学管理系统537

D.4UML类图编辑器539

D.5无线电通信模拟器540

D.6对象状态测试环境541

参考文献543

前  言
译者序计算机已经渗透到社会生活的方方面面。计算机之所以能够被广泛使用,其背后的推动力就是市场经济。但是,实际上是软件在指挥着计算机按照人们想要的方式在工作。软件或者说计算机程序由成千上万条指令构成,这些指令指挥着计算机进行复杂的运算并且控制计算机硬件设备的运行。近些年对于计算机软件的需求快速增长。为了能够满足软件开发工程师或系统分析师的工作需求,学习软件工程的相关知识是非常必要的。软件工程关注三个环节(软件开发过程、软件质量保证和软件项目管理)的行为,这些行为贯穿于软件生命周期中,并同时发生;而面向对象的软件工程(objectoriented software engineering, OOSE)是软件工程的一个专门学科。OOSE将世界和各种系统看作是由相互联系和相互作用的对象构成。在20世纪80年代,C 的迅速传播激起了对引导OO软件开发工作的开发方法的需求。提出了三个有影响的、在软件业内被广泛使用的OO软件开发方法,即Booch框图、对象建模技术(Object Modeling Technique, OMT)和用例工程。业界很快发现使用不同的方法将设计和实现的系统集成起来是一个非常大的挑战,原因就是不同的方法使用不同的建模概念和标记。为了解决这个问题,对象管理组织(Object Management Group, OMG)采用统一建模语言(Unified Modeling Language, UML)作为OMG标准。UML是一个框图的集合,这些框图用于给一个OO系统的方方面面进行建模和设计。UML框图用于需求分析阶段来帮助开发团队理解线性系统的业务流程,也作为设计说明的一部分用于设计阶段。本书大量展示了UML框图。感谢德克萨斯大学阿灵顿分校的David C. Kung先生。敏捷过程、设计模式以及测试驱动的开发(testdriven development, TDD)激发了他写本书的巨大兴趣。敏捷过程强调团队合作、为改变而设计、对软件系统的每个小增量进行快速部署,以及与客户和用户共同开发。设计模式是对常见设计问题的有效解决方案,设计模式促进了软件重用并增进了团队沟通。总之,本文主要关注将UML、设计模式、OO软件测试、TDD集成起来的敏捷统一方法学。软件是你的作品,需要用心血去创作。我们可以用编程语言来准确反映我们的思想,我们应该做得更好,也可以做得更好。只要遵循科学的方法学,一定可以创作出好的软件作品。本书由邢颖翻译,牟永敏统稿。由于译者水平有限,译文中的不当之处在所难免,真诚希望广大读者和同行不吝赐教,我们将不胜感激。
译者2016年11月面向对象软件工程序言序言背景计算机被广泛应用于人类社会的方方面面,它与基于其运行的应用软件一起发挥了很多不同的作用。因此,软件工程师的岗位需求也在井喷式增长。2006年3月的Money杂志将软件工程师评为美国好的50个工作岗位的名。根据美国劳工统计局(Bureau of Labor Statistics, BLS)2010—2020预测,应用程序开发工程师岗位将从520 800增长到664 500(27.6%),而系统分析师的岗位将从544 400增长到664 800(22.1%)。为了能够满足对应用程序开发工程师或系统分析师的要求,接受软件工程方面的教育是非常有必要的。但是根据BLS发布的数据,2006年在软件工程领域只授予了160个学士学位和600个硕士学位,而在计算机科学领域则授予了10 289个学士学位和4512个硕士学位。因此,在软件工程人才的需求和供给之间有巨大的鸿沟,尤其是研究生。很多人都不清楚软件工程的研究范围以及它到底有什么用途,这门学科也经常被误解。许多媒体似乎将软件工程定义为写Java程序。有的学生认为软件工程包括与软件相关的一切。另外一些人则认为软件工程就是画UML框图,这个我们后面会提到。多年前,在节面向对象的软件工程(objectoriented software engineering, OOSE)课后,一位学生对我说:  “教授,你应该知道这门课对于我来说很容易,因为我们以前都画过太多的UML图了。”学期末,那个学生又来找我,他说:  “教授,我想说我们很努力地学习,但我们学的是OO设计。这门课并不是我想象的画UML图。”所以到底什么是软件工程呢?作为一门学科,它包含为了明显提高软件的生产率和质量,同时降低成本和投放到市场的时间所需的工程过程、方法、质量保证和项目管理研究、教育及应用。OOSE是软件工程的一个分支,其特点是将世界和系统看成是相关联系和相互作用的独特视角。20世纪80年代C 语言的出现标志着OOSE时代的到来。从那时起,软件产品开始了其前所未有的世界范围的增长,并因统一建模语言(unified modeling language, UML)和统一过程(unified process, UP)的产生以及世界范围的应用而进一步加速增长。严格来说,软件过程描述了一些阶段以及在各个阶段应该做什么。它不会(详细)定义在每个阶段如何实施各种行为。类似UML这样的建模语言会定义用于交流和记录分析及设计思路的标记、语法和语义。UML和UP都很好,也很必需,但是还不够。这是因为还没有介绍如何产生画UML图的分析和设计思路。动机为了填补上文提到的鸿沟,我们需要一个方法学,或者称之为“食谱”。与过程不同,方法学是对于一些步骤的详细描述,或者是如何实施一些行为使得初学者也可以学习从而生成并部署所需的软件系统。没有方法学,一名刚入门的软件工程师可能会花费数年在职的训练才能学会OO设计、实现和测试技巧。写本书的动机也包括作者被敏捷过程、设计模式以及测试驱动的开发(testdriven development, TDD)所激发的巨大兴趣。敏捷过程强调团队合作、为改变而设计、对软件系统的每个小增量进行快速部署,以及与客户和用户共同开发。设计模式是对常见设计问题的有效解决方案。设计模式促进了软件重用并增进了团队沟通。TDD鼓励可测试的软件,并需要在软件实现前产生测试脚本从而使得软件可以立刻被测试,经常被测试。这类似开发一个游乐场的思路。整个过程包括如下阶段:  计划、公共支持、分析设计、筹措资金、画施工图纸、施工、采购设备、安装设备、试运行、剪彩。但是,光了解整个过程是不够的。开发团队必须知道如何实施各阶段的行为。例如,计划行为包括产生初步概念、可行性分析、总体规划。主题公园团队必须知道如何实施这些行为。分析设计行为包括从利益相关者那里获取需求、实地调查、公园布局设计、公园不同区域主题设计、建模从而研究布局设计和主题、进行总体规划。与描述不同阶段行为的过程不同,一套方法学详细描述了一些步骤,或者是如何实施这些行为。游乐场的开发是一个数年的项目,且花费达数十亿美元。投资者希望公园越早产生收益越好,但是如果按照上述方法开发,投资者必须一直等到公园完工。由于传统过程所施加的约束,总体规划一旦结束就不能被轻易修改。而一旦公园完工,如果公园不能满足利益相关者的期待,则其改变的代价很大。敏捷开发旨在解决这些问题。使用敏捷开发,主题公园初步需求被迅速获取,并允许在开发过程中进行演化。然后从中提取出游乐和娱乐设施的需求,并将其认真归类。生成计划来在相对短的时期内开发和部署这些分类设施,即小增量的快速部署。因此,不同于一刀切的总体规划,开发过程每次只设计和部署一类设施。在这些设施部署好并投入运营后,就寻求反馈,并与利益相关者制订出关于开发计划、预算和时间表的需求变化,即联合开发。另外,应用架构设计模式来提高公园对改变的适应能力和质量,也即为改变而设计。强调团队合作是因为团队之间以及团队成员之间有效的协作能够确保这些设施按时无缝地开发和部署。敏捷过程有一些优点:  投资者能较早获得收益,因为这些设施能按照计划投入运营而且是可行的;由于少量的设施是同时开发和部署的,可以容易改正错误并进行改变。总之,本文主要关注将UML、设计模式、OO软件测试、TDD集成起来的敏捷统一方法学。本书中的方法学叫做“统一方法学”,因为它使用UML作为建模语言并遵循敏捷统一过程。当然这并不意味着对于所有项目都将其他方法统一起来或被当成一个“统一”方法使用。读者本书的读者为计算机科学或软件工程的学生,以及软件开发的专门人士。本书尤其适合作为高年级本科生的基础教材,以及研究生课程和IT业专业培训课程的入门教材。本书包含过去十年间的很多内容,既有在美国以及全球的大学和公司里讲授的课程,也有行业内外软件工程项目的应用素材。这些素材让我能够近距离观察学生和软件工程师如何应用UP、UML、设计模式和TDD,以及他们所面对的困难。他们的反馈让我能够持续更新本书的内容。组织本书有24章,被分为以下8个部分: 第1部分引言与系统工程。这部分由前3章构成,它提供了观察软件生命周期行为的视角。尤其是,它覆盖了软件过程模型、方法学的概念、过程与方法的区别以及系统工程。第2部分分析和体系结构设计。这部分介绍了计划阶段的行为,包括需求提取、领域建模和架构设计。第3部分交互式系统的建模和设计。这部分主要处理建模与交互系统设计问题,共包括6章。这6章介绍了如何根据需求识别出用例、如何对参与者系统交互以及对象交互行为进行建模和设计、如何应用职责分配模式、如何得到作为设计蓝本的设计类框图,以及如何设计用户交互界面。第4部分其他类型系统的建模和设计。这部分包括3章,每章介绍一种类型系统的建模与设计。具体来说,第13章介绍事件驱动系统的建模与设计;第14章介绍迁移系统的建模与设计;第15章介绍基于业务规则的系统的建模与设计。第5部分应用情景特定模式。这部分由两章构成,主要介绍如何应用情景特定模式。其中使用了一个案例分析,即状态图编辑器的设计来帮助理解这个过程。第6部分实现和质量保证。这部分包括3章,包括实现时要考虑的问题、软件质量保证的概念和行为以及软件测试。第7部分维护和配置管理。这部分包括两章,内容覆盖了软件维护与软件配置管理。第8部分项目管理和软件安全。本书的后一部分由两章构成,一章介绍软件项目管理,另一章介绍软件安全,包括涉及安全软件系统的建模与设计的生命周期行为。本书素材可以满足若干软件工程课程的需求,例如: 1.  第1~3部分与第6~8部分的一些主题对于面向对象的软件工程(OOSE)或软件工程课程的入门,都是一个很好的组合。既可以作为大学本科的课程,也可以作为入门的研究生课程。2.  第2部分和第5部分以及其他部分的部分章节可以构成软件设计模式的课程。建议将上述OOSE课程作为这门课的先修课。但是可能有些国外的学生没学过OOSE这门课,在这种情况下,建议先使用2~4周的时间大概了解一下第2和第3部分介绍的方法,因为这些方法为应用模式提供了框架。3.  第6和第7这两部分可以以很多种方式讲授。它们可以形成一门课——质量保证、测试和维护。也可以当成两门课来教,分别是软件质量保证,以及软件测试和维护。当然也可以作为三门课来教,分别是软件质量保证、软件测试和软件维护。4.  第13~15章和第19~20章以及其他章的部分模式可以形成关于建模、设计、复杂系统的验证与确认这门课。5.  第1和第6~8这几部分以及其他部分的部分章节可以形成软件项目管理这门课。6.  后,第1部分和第2部分以及第24章加上其他章节的部分模式和主题可以构成软件安全概论这门课程。教员可以增加素材使得课程内容更加丰富。在网站http://www.mhhe.com/kung上可以找到教学辅助素材,包括PowerPoint教学幻灯片、随堂测试题和测试生成软件、测试问题的数据库、课程描述及要点、实验手册,以及软件工具。尤其对于没上过这门课的新教师来说,这些教学工具可以帮助减少备课的时间和工作量。致谢我想感谢我的众多学生,他们的提问、反馈、热情,以及将课程内容应用于实际项目的努力都在不断激励我。学生们也阅读和使用本书以及教学素材。他们提供给我宝贵的反馈和改进的建议。有些人实地参加到了本书中某些方法的设计和实现中。有些人参加到了评估本书方法效果的实验中。很多人毕业后继续将本书方法应用于行业内,并和我分享他们的宝贵经历。我想感谢我的女儿Jacquelyn Kung帮我编辑草稿的部分章节。感谢McGrawHill环球出版社的工程和计算机科学部的Raghu Srinivasan提供给我宝贵的改进建议和对出版流程的指导。感谢评论家们提出的意见和建议。这些意见和建议对于本书的结构组织、内容显示以及很多方面都有极大的帮助。在漫长的写作过程中,我的妻子Cindy Kung和很多学术界及业内的同事都给予我持续的鼓励和无私的帮助,在此也对他们表示感谢。
都志辉2012年8月于清华园
媒体评论
评论
书摘插画
插图

插图

插图

插图

插图

插图

插图

插图

抢先评论了 “面向对象软件工程” 取消回复

评论

还没有评论。

相关产品

加入购物车

父与子的编程之旅:与小卡特一起学Python

EUR €43.99
评分 5.00 / 5
加入购物车

软件构架实践(第3版 影印版)

EUR €45.99
阅读更多
缺货

全栈性能测试修炼宝典 JMeter实战

EUR €53.99
阅读更多
缺货

大话设计模式(交互启发式教学 谈笑间详解设计模式 让你爱不释手)

EUR €31.99

东东购的宗旨是服务喜爱阅读中文书籍的海外人民,提供一个完善的购书平台,让国人不论何时何地都能沉浸在书香之中,读着熟悉的中文字,回忆着家乡的味道。


安全加密结账 安心网络购物 支持Paypal付款

常见问题

  • 货物配送
  • 退换货政策
  • 隐私政策
  • 联盟营销

客户服务

  • 联系东东
  • 关于东东
  • 帮我找书
  • 货物追踪
  • 会员登入

订阅最新的优惠讯息和书籍资讯

选择币别

EUR
USD
CAD
AUD
NZD
NOK
GBP
CHF
SEK
CNY
UAH
ILS
SAR
MXN
KRW
MYR
SGD
HUF
TRY
JPY
HKD
TWD
facebookinstagram
©2020 东东购 EasternEast.com

限时特卖:用“SALE15”优惠券全场书籍85折!可与三本88折,六本78折的优惠叠加计算。 忽略