新書推薦:
《
封建社会农民战争问题导论(光启文库)
》
售價:NT$
296.0
《
虚弱的反攻:开禧北伐
》
售價:NT$
429.0
《
泰山:一种中国信仰专论(法国汉学经典译丛)
》
售價:NT$
380.0
《
花外集斠箋
》
售價:NT$
704.0
《
有兽焉.8
》
售價:NT$
305.0
《
大学问·明清经济史讲稿
》
售價:NT$
330.0
《
中国国际法年刊(2023)
》
售價:NT$
539.0
《
早点知道会幸福的那些事
》
售價:NT$
295.0
|
編輯推薦: |
本书着重对考试大纲规定的内容有重点地细化和深化,内容涵盖了系统集成项目管理工程师考试大纲的所有重要知识点。? 对案例分析试题,给出了解答方法和带有详细分析的例题。? 编写组成员均为软考*线的辅导专家,负责和参与了考试大纲的制定、历年的软考辅导、教程编写、软考阅卷等方面的工作,因此,本书凝聚了软考专家的知识、经验、心得和体会。
|
內容簡介: |
本书由希赛教育软考学院组织编写,作为计算机技术与软件专业技术资格(水平)考试指定参考用书。着重对考试大纲规定的内容有重点地细化和深化,内容涵盖了系统集成项目管理工程师考试大纲(2016年修订版)的所有知识点,每章中还带有巩固知识点的例题,并有详细的分析与解答,案例分析部分则给出了解答方法和带有详细分析的例题。 阅读本书,就相当于阅读了一本详细的、带有知识注释的考试大纲。准备考试的人员可通过阅读本书掌握考试大纲规定的知识,掌握考试重点和难点,熟悉考试方法、试题形式,试题的深度和广度以及内容的分布、解答问题的方法和技巧,迅速提升基础知识和案例分析掌握水平。 本书也可作为系统集成项目经理日常工作的参考手册,也可作为计算机专业教师的教学和工作参考书。
|
目錄:
|
目 录
第1章 信息化知识... 1
1.1 信息化概述... 1
1.1.1 信息与信息化... 1
1.1.2 国家信息化体系... 2
1.1.3 国家信息化发展战略... 4
1.2 电子政务... 6
1.2.1 概念与内容... 6
1.2.2 目标和主要任务... 7
1.3 企业信息化与电子商务... 9
1.3.1 企业信息化... 9
1.3.2 企业资源计划... 11
1.3.3 客户关系管理... 12
1.3.4 供应链管理... 13
1.3.5 企业应用集成... 13
1.3.6 电子商务... 15
1.3.7 商业智能... 16
1.4 智慧城市... 18
1.4.1 智慧城市的概念及内涵... 18
1.4.2 智慧城市的参考模型... 19
1.4.3 我国智慧城市建设的指导思想、原则和目标... 20
1.4.4 智慧城市建设的主要内容... 21
1.5 例题分析... 24
第2章 信息系统服务管理... 27
2.1 信息系统服务业... 27
2.1.1 信息系统服务业的内容... 27
2.1.2 信息系统集成... 27
2.1.3 信息系统工程监理... 28
2.2 信息系统服务管理体系... 29
2.2.1 我国的信息系统服务管理体系... 30
2.2.2 IT系统运营与服务... 30
2.2.3 IT服务管理... 32
2.2.4 信息技术服务标准... 35
2.2.5 信息系统审计... 38
2.3 信息系统集成资质管理... 40
2.3.1 系统集成单位资质管理... 40
2.3.2 项目管理人员资格管理... 46
2.4 信息系统监理资质管理... 48
2.4.1 监理单位资质管理... 48
2.4.2 资质等级评定条件... 50
2.5 例题分析... 54
第3章 信息技术知识... 57
3.1 信息系统建设... 57
3.1.1 信息系统的生命周期... 58
3.1.2 信息系统开发方法... 58
3.2 软件工程... 60
3.2.1 需求分析... 60
3.2.2 软件设计... 62
3.2.3 软件测试... 63
3.2.4 软件维护... 65
3.2.5 软件开发工具... 66
3.2.6 构件与软件重用... 66
3.3 面向对象的分析与设计... 68
3.3.1 基本概念... 68
3.3.2 统一建模语言... 70
3.4 软件体系结构... 72
3.4.1 典型体系结构... 72
3.4.2 中间件... 75
3.5 典型应用集成技术... 76
3.5.1 数据仓库技术... 76
3.5.2 Web Service技术... 78
3.5.3 J2EE架构... 80
3.5.4 .NET架构... 82
3.5.5 软件引擎技术... 84
3.6 计算机网络知识... 85
3.6.1 网络技术标准与协议... 85
3.6.2 Internet技术及应用... 86
3.6.3 网络分类... 88
3.6.4 网络管理... 88
3.6.5 网络服务器... 89
3.6.6 网络交换与存储技术... 92
3.6.7 无线网络与光网络技术... 94
3.6.8 网络接入技术... 95
3.6.9 综合布线与机房工程... 97
3.6.10 网络规划与设计... 100
3.6.11 网络安全... 101
3.7 新一代信息技术... 108
3.7.1 大数据... 108
3.7.2 云计算... 110
3.7.3 物联网... 115
3.7.4 移动互联网... 118
3.7.5 互联网 . 120
3.8 例题分析... 122
第4章 法律法规和标准规范... 127
4.1 软件工程的国家标准... 127
4.1.1 软件工程基础标准... 128
4.1.2 软件工程开发标准... 129
4.1.3 软件工程文档标准... 130
4.1.4 软件工程管理标准... 132
4.2 知识产权管理... 134
4.2.1 著作权... 135
4.2.2 专利权... 136
4.2.3 商标权... 137
4.2.4 知识产权管理要项... 138
4.3 例题分析... 138
第5章 项目管理的一般知识... 143
5.1 项目管理概述... 143
5.1.1 系统集成项目的特点... 143
5.1.2 项目管理知识体系... 144
5.2 项目的组织... 145
5.3 项目生命周期... 146
5.3.1 生命周期的特征... 146
5.3.2 生命周期模型... 148
5.4 单个项目的管理过程... 152
5.4.1 项目过程... 153
5.4.2 项目管理过程组... 153
5.4.3 过程的交互... 154
5.4.4 相关术语解析... 154
5.5 例题分析... 158
第6章 项目立项管理... 162
6.1 建设方的立项管理... 162
6.1.1 可行性研究... 162
6.1.2 项目论证与评估... 166
6.1.3 项目招标... 168
6.2 承建方的立项管理... 170
6.2.1 项目识别... 170
6.2.2 项目论证... 171
6.2.3 投标... 172
6.3 签订合同... 173
6.4 政府采购法... 174
6.4.1 总则... 174
6.4.2 政府采购当事人... 175
6.4.3 政府采购方式... 176
6.4.4 政府采购程序... 177
6.4.5 政府采购合同... 178
6.4.6 质疑与投诉... 179
6.4.7 监督检查... 180
6.4.8 法律责任... 180
6.5 例题分析... 182
第7章 项目整体管理... 188
7.1 项目整体管理概述... 188
7.2 制定项目章程... 189
7.3 编制初步范围说明书... 190
7.4 项目管理计划... 191
7.4.1 项目管理计划概述... 191
7.4.2 制定项目管理计划... 194
7.4.3 指导与管理项目执行... 196
7.4.4 监控项目工作... 196
7.5 实施整体变更控制... 198
7.6 结束项目或阶段... 200
7.7 例题分析... 203
第8章 项目范围管理... 206
8.1 范围管理概述... 206
8.2 收集需求... 207
8.2.1 收集需求的方法... 207
8.2.2 需求管理计划... 210
8.2.3 需求规格说明书... 211
8.2.4 需求跟踪... 211
8.3 定义范围... 214
8.4 创建工作分解结构... 215
8.5 核实范围... 218
8.6 控制范围... 219
8.7 例题分析... 220
第9章 项目进度管理... 223
9.1 进度管理概述... 223
9.2 定义活动... 224
9.3 排列活动顺序... 225
9.4 估算活动资源... 229
9.5 估算活动持续时间... 231
9.6 制订进度计划... 232
9.7 控制进度... 237
9.8 例题分析... 240
第10章 项目成本管理... 245
10.1 成本管理概述... 245
10.2 估算成本... 247
10.2.1 估算成本概述... 248
10.2.2 工具与技术... 249
10.2.3 输入与输出... 250
10.3 制定预算... 251
10.4 控制成本... 254
10.4.1 成本失控的原因... 254
10.4.2 工具与技术... 255
10.4.3 输入与输出... 256
10.5 例题分析... 258
第11章 项目质量管理... 262
11.1 质量管理基础... 262
11.1.1 原则与目标... 263
11.1.2 质量管理理论... 263
11.1.3 软件过程管理... 266
11.2 质量管理常用工具... 268
11.2.1 老七种工具... 269
11.2.2 新七种工具... 270
11.3 规划质量... 273
11.4 实施质量保证... 275
11.5 实施质量控制... 277
11.6 软件质量管理... 278
11.7 例题分析... 279
第12章 项目人力资源管理... 284
12.1 人力资源管理概述... 284
12.2 制定人力资源计划... 285
12.2.1 工具与技术... 285
12.2.2 输入与输出... 287
12.2.3 人力资源计划... 287
12.3 组建项目团队... 289
12.4 现代激励理论体系... 290
12.5 建设项目团队... 293
12.6 管理项目团队... 295
12.6.1 管理项目团队概述... 295
12.6.2 冲突管理... 297
12.7 例题分析... 298
第13章 项目沟通管理和干系人管理... 303
13.1 项目沟通管理概述... 303
13.2 识别项目干系人... 305
13.3 规划干系人管理... 307
13.3.1 规划干系人管理的工具与技术... 308
13.3.2 干系人管理计划... 309
13.4 管理干系人参与... 309
13.5 控制干系人参与... 311
13.6 制定沟通管理计划... 312
13.6.1 沟通需求分析... 312
13.6.2 沟通技术... 313
13.6.3 沟通模型... 313
13.6.4 沟通方法... 314
13.6.5 沟通管理计划... 315
13.7 管理沟通... 315
13.8 控制沟通... 316
13.9 绩效报告... 317
13.10 例题分析... 320
第14章 项目采购管理... 324
14.1 采购管理概述... 324
14.2 规划采购... 325
14.3 实施采购... 329
14.4 管理采购... 330
14.5 结束采购... 332
14.6 例题分析... 333
第15章 项目合同管理... 336
15.1 合同概述... 336
15.1.1 合同的概念... 336
15.1.2 合同的分类... 338
15.1.3 合同的内容... 341
15.1.4 合同签订的注意事项... 342
15.2 合同管理... 343
15.2.1 合同管理概述... 343
15.2.2 合同管理过程... 345
15.2.3 合同索赔管理... 346
15.3 合同法... 349
15.3.1 合同的订立... 349
15.3.2 合同的效力... 351
15.3.3 合同的履行... 352
15.3.4 合同的变更和转让... 353
15.3.5 合同的权利义务终止... 354
15.3.6 违约责任... 355
15.3.7 其他规定... 356
15.3.8 承揽合同... 357
15.3.9 建设工程合同... 358
15.3.10 技术合同... 359
15.4 例题分析... 363
第16章 项目风险管理... 366
16.1 风险管理概述... 366
16.1.1 项目风险的特点... 366
16.1.2 风险的分类... 367
16.1.3 风险管理的过程... 369
16.2 规划风险管理... 370
16.3 识别风险... 372
16.3.1 识别风险的方法... 372
16.3.2 识别风险的输入与输出... 374
16.4 实施定性风险分析... 375
16.4.1 工具与技术... 375
16.4.2 输入与输出... 376
16.5 实施定量风险分析... 377
16.5.1 工具与技术... 377
16.5.2 输入与输出... 379
16.6 规划风险应对... 380
16.7 监控风险... 383
16.7.1 主要工作内容... 383
16.7.2 工具与技术... 384
16.7.3 输入与输出... 385
16.8 例题分析... 386
第17章 信息(文档)与配置管理... 389
17.1 项目相关信息及其管理... 389
17.2 配置管理概述... 390
17.3 制定配置管理计划... 392
17.4 配置识别与建立基线... 393
17.5 建立配置管理系统... 394
17.6 版本管理... 396
17.7 配置状态报告... 397
17.8 配置审核... 398
17.9 例题分析... 399
第18章 项目变更管理... 403
18.1 项目变更基本概念... 403
18.2 变更管理的基本原则... 404
18.3 变更管理组织机构与工作程序... 405
18.4 项目变更管理的工作内容... 406
18.5 例题分析... 407
第19章 信息系统安全管理... 411
19.1 信息安全管理... 411
19.1.1 信息安全的含义及目标... 411
19.1.2 信息安全管理的内容... 412
19.2 信息系统安全... 416
19.2.1 信息系统安全属性... 416
19.2.2 信息系统安全管理体系... 417
19.3 物理安全管理... 419
19.4 人员安全管理... 421
19.5 应用系统安全管理... 423
19.5.1 访问控制... 423
19.5.2 用户标识与认证... 425
19.6 信息安全等级保护... 427
19.7 例题分析... 428
第20章 案例分析... 435
20.1 试题解答方法... 435
20.2 试题解答实例... 435
20.2.1 进度管理... 436
20.2.2 关键路径... 437
20.2.3 质量管理... 439
20.2.4 整体管理... 440
20.2.5 合同管理... 442
20.2.6 成本管理... 443
20.2.7 范围管理... 444
|
內容試閱:
|
前言 随着系统集成项目的规模越来越大,复杂程度越来越高,项目失败的概率也随之增长。因此,项目管理工作日益受到重视。从2009年上半年开始,全国计算机技术与软件专业技术资格(水平)考试(以下简称软考)开设了系统集成项目管理工程师的考试,这为培养项目管理人才,推进国家信息化建设和软件产业化发展起到了重要的作用。与此同时,国家人事部也规定,凡是通过系统集成项目管理工程师考试者,即可认定为计算机技术与软件专业工程师职称,由用人单位直接聘任,享受工程师待遇。1.写作目的正因为有行业的需求,有好的政策引导,所以参加系统集成项目管理工程师考试的人员众多。然而,系统集成项目管理工程师考试范围比较广泛,除涉及计算机专业和项目管理的每门课程外,还有经济、外语、系统工程、信息化和知识产权等知识领域的课程。考试不但注重广度,而且还有一定的深度。这就要求考生不但要具备扎实的理论基础知识,而且还要具备丰富的实践经验。根据希赛教育网站(www.educity.cn)的调查,系统集成项目管理工程师考生最渴望得到的就是一本既能全面反映考试大纲内容,同时又能比较精简的备考书籍。项目经理平常工作比较忙,没有多少时间用来学习理论知识,也无暇总结自己的实践经验,希望能通过对一本书的学习,找到解答试题的捷径。软考的组织者和领导者也希望能有一本书籍帮助考生复习和备考,从而提高考试合格率,为国家信息化建设和信息产业发展培养更多的IT人才。鉴于此,为了帮助广大考生顺利通过系统集成项目管理工程师考试,希赛教育软考学院组织有关专家,在清华大学出版社的大力支持下编写和出版了本书,来作为系统集成项目管理工程师考试的参考用书。2.本书内容本书着重对考试大纲规定的内容有重点地进行了细化和深化,内容涵盖系统集成项目管理工程师考试大纲的所有重要知识点,并给出了例题及其分析,以巩固所学知识,并对案例分析试题给出了解答方法和带有详细分析的例题。本书编写组成员均为软考第一线的辅导专家,负责和参与了考试大纲的制定、历年的软考辅导、教程编写、软考阅卷等方面的工作。因此,书中凝聚了软考专家的知识、经验、心得和体会,凝聚了他们的精力和心血。古人云:知己知彼,百战不殆。对考生来说,通过阅读本书,就可以清晰地把握命题思路,掌握知识点在试题中的变化,以便在系统集成项目管理工程师考试中洞察先机,提高通过率。3.关于作者希赛教育专业从事人才培养、教育产品开发、教育图书出版,在职业教育方面具有极高的权威性。特别是在在线教育方面,稳居国内首位,希赛教育的远程教育模式得到了国家教育部门的认可和推广。希赛教育软考学院是全国计算机技术与软件专业技术资格(水平)考试的顶级培训机构,拥有近20名资深软考辅导专家,负责了高级资格考试大纲的制订工作,以及软考辅导教材的编写工作,共组织编写和出版了80多本软考教材,内容涵盖初级、中级和高级的各个专业,包括教程系列、辅导系列、考点分析系列、冲刺系列、串讲系列、试题精解系列、疑难解答系列、全程指导系列、案例分析系列、指定参考用书系列、一本通等11个系列的书籍。希赛教育软考学院的专家录制了软考培训视频教程、串讲视频教程、试题讲解视频教程、专题讲解视频教程等4个系列的软考视频,这些软考教材、软考视频、软考辅导为考生助考、提高通过率做出了不可磨灭的贡献,在软考领域有口皆碑。特别是在高级资格考试领域,无论是考试教材,还是在线辅导和面授,希赛教育软考学院都独占鳌头。本书由希赛教育软考学院主编,参加编写工作的人员有张友生、王勇、何玉云、谢顺、左水林、胡钊源、彭雪阳、王玉罡、刘洋波和桂阳。4.在线测试希赛教育在线测试平台为考生准备了在线测试,其中有数十套全真模拟试题和考前密卷,考生可选择任何一套进行测试。测试完毕,系统自动判卷,立即给出分数。对于考生做错的地方,系统会自动记忆,待考生第二次参加测试时,可选择试题复习。这样,系统就会自动把考生原来做错的试题显示出来,供考生重新测试,以加强记忆。如此,读者可利用上学吧在线测试平台的在线测试系统检查自己的实际水平,加强考前训练,做到心中有数,考试不慌。5.诚挚致谢在本书出版之际,要特别感谢全国计算机技术与软件专业技术资格(水平)考试办公室的命题专家们,我们在本书中引用了部分考试原题,使本书能够尽量方便读者阅读。同时,本书在编写的过程中参考了许多高水平的资料和书籍,在此,我们对这些参考文献的作者表示真诚的感谢。感谢清华大学出版社柴文强老师和杨如林老师,他们在本书的策划、选题的申报、写作大纲的确定,以及编辑、出版等方面,付出了辛勤的劳动和智慧,给予了我们很多的支持和帮助。感谢希赛教育的学员们,正是他们的想法汇成了编写本书的原动力,他们的意见也使本书更加贴近读者。6.互动讨论由于我们水平有限,且本书涉及的知识点较多,书中难免有不妥和错误之处。我们诚恳地期望各位专家和读者不吝指教和帮助,对此,我们将深为感激。有关本书的反馈意见,读者可在希赛教育网站或微信公众号上与我们交流,我们会及时地在线解答读者的疑问。希赛教育软考学院2016年6月?????????II系统集成项目管理工程师考试全程指导(第3版)III前言
第3章 信息技术知识 根据考试大纲,本章主要考查以下知识点。(1)信息系统建设的基本概念:信息系统建设的总体目标;信息系统的生命周期、各阶段目标及其主要工作内容;信息系统常用的开发方法。(2)信息系统设计:方案设计、系统架构。(3)软件工程:软件需求分析与定义;软件设计、测试与维护;软件质量保证及质量评价;软件配置管理;软件过程管理;软件开发工具;软件(重复)用。(4)面向对象的系统分析与设计:面向对象的基本概念;统一建模语言与可视化建模;面向对象的系统分析;面向对象的系统设计。(5)软件架构:软件架构的定义;软件架构的模式;软件架构的分析与评估。(6)应用集成技术:数据库与数据仓库技术;Web Service技术;J2EE架构;.NET架构;软件引擎技术(流程引擎、Ajax引擎);构件和常用构件标准(COMDCOMCOM 、CORBA和EJB);软件中间件。(7)计算机网络技术:网络技术标准与协议;Internet技术及应用;网络分类;网络服务器;网络交换技术;网络存储技术;光网络技术;无线网络技术;网络接入技术;综合布线和机房工程;网络规划、设计与实施;网络安全;网络管理。(8)大数据:大数据的概念;大数据的关键技术;大数据的发展应用领域和目标。(9)云计算:云计算的概念和服务类型;云计算的关键技术;发展云计算的指导思想、基本原则和目标;发展云计算的主要任务。(10)物联网:物联网的概念;物联网的发展现状;物联网的架构;物联网的关键技术;物联网的应用。(11)移动互联网:移动互联网的概念;移动互联网的发展现状;移动互联网的关键技术;移动互联网的应用。(12)互联网 :互联网 的内涵;互联网 行动。3.1 信息系统建设信息系统的建设在技术和管理上都存在复杂性,但在生命周期上还是有一定规律可循的。人们经过长期的理论与实践探索,也提出了一些信息系统的开发方法,这些规律和方法对系统的建设具有重要的意义,有利于从整体上把握系统建设的思路。3.1.1 信息系统的生命周期一般来说,信息系统的生命周期分为4个阶段,即产生阶段、开发阶段、运行阶段和消亡阶段。(1)产生阶段。也称为信息系统的概念阶段、需求分析阶段。这一阶段又分为两个过程,一是概念的产生过程,即根据企业经营管理的需要,提出建设信息系统的初步想法;二是需求分析过程,即对企业信息系统的需求进行深入的调研和分析,并形成需求分析报告。(2)开发阶段。这个阶段是信息系统生命周期中最为关键的一个阶段。该阶段又可分为5个子阶段,即总体规划、系统分析、系统设计、系统实施和系统验收子阶段。一个比较完整的总体规划,应当包括信息系统的开发目标、总体架构、组织结构和管理流程、实施计划、信息系统的技术规范等。系统分析阶段的目标是为系统设计阶段提供系统的逻辑模型。系统分析的内容主要应包括组织结构及功能分析、业务流程分析、数据和数据流程分析、系统初步方案等。系统设计阶段是根据系统分析的结果,设计出信息系统的实施方案。系统设计的主要内容包括系统架构设计、数据库设计、处理流程设计、功能模块设计、安全控制方案设计、系统组织和队伍设计、系统管理流程设计等。系统实施阶段是将设计阶段的结果在计算机和网络上具体实现,将设计文本变成能在计算机上运行的软件系统。信息系统实施阶段结束以后,系统就要进入试运行。通过试运行,系统性能的优劣、是否做到了用户友好等问题都会暴露在用户面前,此后就进入了系统验收阶段。(3)运行阶段。当信息系统通过验收,正式移交给用户以后,系统就进入了运行阶段。(4)消亡阶段。企业处在瞬息万变的市场竞争的环境中,企业的信息系统经常会不可避免地遇到系统更新改造、功能扩展,甚至是报废重建的情况,一个信息系统也必然会逐渐消亡。因此,企业在信息系统建设的初期就要注意系统的消亡条件和时机,以及由此带来的成本。3.1.2 信息系统开发方法信息系统是一个极为复杂的人-机系统,它不仅包含计算机技术、通信技术,以及其他的工程技术,而且还是一个复杂的管理系统,需要管理理论和方法的支持。人们在长期的工程理论与实践探索中逐步总结出了一些开发方法。1.结构化方法结构化方法是由结构化系统分析和设计组成的一种信息系统开发方法。结构化方法是目前最成熟、应用最广泛的信息系统开发方法之一。由于它假定被开发的系统是一个结构化的系统,因此,其基本思想是将系统的生命周期划分为系统调查、系统分析、系统设计、系统实施、系统维护等阶段。结构化方法遵循系统工程原理,按照事先设计好的程序和步骤,使用一定的开发工具,完成规定的文档,在结构化和模块化的基础上进行信息系统的开发工作。结构化方法的开发过程一般是先将系统的功能看成是一个大的模块,再根据系统分析与设计的要求对其进行进一步的模块分解或组合。2.快速原型法快速原型法是一种根据用户需求,利用系统开发工具快速建立一个系统模型并展示给用户,在此基础上与用户交流,最终实现用户需求的信息系统的开发方法。快速原型法的开发过程包括系统需求分析、系统初步设计、系统调试、系统检测等阶段。用户仅需在系统分析与系统初步设计阶段完成对应用系统的简单描述,开发者则在获取一组基本需求定义后,利用开发工具生成应用系统原型,快速建立一个目标应用系统的最初版本,并将它提交给用户试用、评价。之后,根据用户提出的意见和建议进行修改和补充,从而形成新的版本,再返回给用户。通过这样反复交流,使得系统不断地得到细化和扩充,直到生成一个用户满意的解决方案为止。快速原型法具有开发周期短、见效快、与业务人员交流方便的优点,特别适用于那些用户需求模糊,结构性比较差的信息系统的开发。3.企业系统规划方法企业系统规划方法(Business System Planning,BSP)是企业战略数据规划方法和信息工程方法的基础和,也就是说,后两种方法是在BSP方法的基础上发展起来的。BSP方法的目标是提供一个信息系统规划,用以支持企业短期的和长期的信息需求。4.战略数据规划方法战略数据规划方法是由世界级的信息系统大师詹姆斯马丁提出的一种信息系统开发方法。该方法认为,一个企业要建设信息系统,它的首要任务应该是在企业战略目标的指导下做好企业战略数据规划。一个好的企业战略数据规划应该是企业核心竞争力的重要构成因素,它有非常明显的异质性和专有性。好的企业战略数据规划必将成为企业在市场竞争中的制胜法宝。战略数据规划方法的要点主要包括以下4个方面。(1)数据环境对于信息系统至关重要。企业数据环境是随着企业的发展不断变化的,也是企业发展的基础条件。信息系统建设极大地影响着企业的未来发展方向,对企业的数据环境提出了更高的要求。将静态的、独立的信息资源通过战略数据规划重建企业数据环境,使其成为集成化、网络化的信息资源,对一个现代化企业来说是更为迫切的 任务。(2)4种数据环境。在信息系统发展的历程中共有4类数据环境,即数据文件、应用数据库、主题数据库和信息检索系统。(3)建设主题数据库是信息系统开发的中心任务。这里的主题数据库并不是指数据库的大小,也不是指数据库的功能,而是指哪些数据库是面向企业的业务主题的,哪些不是面向业务主题的。所谓业务主题,就是指企业的核心业务和主导流程。例如,对于一个汽车制造企业来说,生产整车就是其核心竞争力,相应地,围绕核心业务建立的数据库就是企业的主题数据库;而对于一个物流企业来说,围绕着物流业务处理的数据库就是企业的主题数据库。(4)围绕主题数据库搞好应用软件开发。5.信息工程方法信息工程方法与企业系统规划方法和战略数据规划方法是一种交叉关系,即信息工程方法是其他两种方法的总结和提升,而其他两种方法则是信息工程方法的基础和核心。信息工程方法与信息系统开发的其他方法相比,有一个很大的不同,就是信息工程不仅是一种方法,它还是一门工程学科。它第一次将信息系统开发过程工程化了。所谓工程化,就是指有一整套成熟的、规范的工程方法、技术、标准、程序和规范,使得开发工作摆脱随意性和多变性,其目标是使信息系统的开发走上智能化、程序化和自动化的道路。6.面向对象方法在面向对象方法中将客观世界从概念上看成是一个由许多相互配合而协作的对象所组成的系统。面向对象的分析方法是利用面向对象的信息建模概念,如实体、关系、属性等,同时运用封装、继承、多态等机制来构造模拟现实系统的方法。传统的结构化设计方法的基本点是面向过程,即将系统分解成若干个过程;而面向对象的方法是采用构造模型的观点,在系统的开发过程中,各个步骤的共同的目标是建造一个问题域的模型。在面向对象的设计中,初始元素是对象,然后将具有共同特征的对象归纳成类,组织类之间的等级关系,从而构造出类库。在应用时,就可直接在类库中选择已有的类,从而达到复用的目的。3.2 软件工程软件工程既是一种方法,又是一门工程学科,是研究如何有效地组织和管理软件开发的工程学科。IEEE(The Institute of Electrical and Electronics Engineers,电气和电子工程师协会)在1983年给出的软件工程定义为:软件工程是开发、运行、维护和修复软件的系统方法。3.2.1 需求分析软件需求包括功能需求、非功能需求和设计约束3方面的内容。(1)功能需求:指系统需要完成哪些事,即为了向它的用户提供有用的功能,软件系统必须具有的功能。(2)非功能需求:指产品必须具备的属性或品质,如可靠性、性能、响应时间、容错性、扩展性等。(3)设计约束:也称为限制条件、补充规约,通常是对解决方案的一些约束说明,如必须采用国有自主知识版权的操作系统,必须运行在Linux操作系统之下等。下面一起来体会一些与需求相关的专业术语。(1)业务需求:指反映组织机构或客户对系统、产品高层次的目标要求,通常问题定义本身就是业务需求。(2)用户需求:指描述用户使用产品必须要完成的哪些任务,通常是在问题定义的基础上进行用户访谈、调查,对用户使用的场景进行整理,从而建立从用户角度出发的需求。(3)系统需求:从系统的角度来说明软件的需求,包括有关系统特性说明的功能需求、质量属性,以及其他非功能需求,此外还包括一些设计上的约束。所谓分析就是通过对问题域的研究,获得对该领域特性及存在于其中(需要解决)的问题特性的透彻理解,并用文档加以说明。从上面的定义可以得知,需求分析的关键在于对问题域的研究与理解。为了便于理解问题域,现代软件工程方法所推荐的做法是对问题域进行抽象,将其分解为若干的基本元素,然后对元素之间的关系进行建模。需求分析就是要提炼、分析和仔细审查已经收集到的需求,以确保所有的项目干系人都明白其含义并找出其中的错误、遗漏或其他不足的地方。软件需求分析的工作通常包括以下7个方面。(1)绘制系统上下文范围关系图。这种关系图是用于定义系统内部与系统外部实体间的界限和接口的简单模型,它可以为需求确定一个范围。(2)创建用户接口原型。由于用户界面对于一个系统来说是十分重要的,因此在需求分析阶段中通过快速开发工具开发一个快速的原型,或者通过PowerPoint、Authorware等演示工具制作一个演示原型,甚至可以用纸笔画出一些关键的界面接口示意图,这些都有助于客户更好地理解所要解决的问题,更好地理解需求。(3)分析需求的可行性。对所有获得的需求进行成本、性能、技术实现方面的可行性研究,以及这些需求项是否与其他的需求项有冲突,是否有对外的依赖关系等。(4)确定需求的优先级。这是一项很重要的工作。迭代开发已经成为现代软件工程方法论的一个基础,而需求的优先级是制订迭代计划的一个最重要的依据。对于需求优先级的描述,可以采用满意度非满意度指标进行说明,比如满意度可取值1~5,表示当需求被实现时用户的满意程度;不满意度可取值1~5,表示当需求未被实现时用户的不满意程度。(5)为需求建立模型。也就是建立分析模型,这些模型的表现形式主要是图表加上少量的文字描述。在实践工程中,提倡多用图形来表达,图形化地描述需求将会更加清晰、易懂。根据采用的分析技术的不同,采用的图也不同,如面向对象技术下采用的用例模型和域模型;面向数据分析技术下采用的E-R(Entity-Relationship,实体-关系)图;结构化分析技术下采用的数据流图等。(6)创建数据字典。数据字典是对系统用到的所有数据项和结构所作的定义,以确保开发人员使用统一的数据定义。(7)使用QFD(Quality Function Deployment,质量功能展开)。这是在需求优先级基础上的一个升华,其原理与满意度非满意度指标十分接近。通过将产品特性、属性与对客户的重要性联系起来,QFD把需求分为三类:期望需求(即如果缺少会让客户感到不满意的需求)、普通需求、兴奋需求(实现了客户会感到惊喜,但没有也不会遭到责备)。浏览某种单一形式表达的需求不一定能够对其有完全的理解,而将用文字表示的需求和用图形表示的需求结合起来效果则好得多。用图形表示需求,主要通过对需求进行建模来实现,建立的分析模型有助于检测到需求的不一致性、模糊性、错误及遗漏。希赛教育软考学院专家提示:迄今为止,尚未发现一种分析建模技术能够将需求的所有内容涵盖,应根据实际情况进行有效组合。进行需求建模时,首先应该建立一个概念,即分析模型的基础是分析元素,而分析元素则来源于客户所陈述的需求。应该尽可能地利用CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具创建、维护、发布需求模型,以保持其可控性。3.2.2 软件设计软件设计的基本原则是信息隐蔽与模块独立性。信息隐蔽是指在概要设计时列出将来可能发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。也就是说,每个模块的实现细节对于其他模块来说是隐蔽的,模块中所包含的信息(包括数据和过程)不允许其他不需要这些信息的模块使用。软件设计中的模块独立性是指软件系统中每个模块只涉及软件系统中的某项具体功能,而与软件系统中的其他模块接口是相对简单的。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。一般采用两个准则度量模块独立性,即模块间耦合和模块内聚。耦合是对模块之间相对独立性(互相联系的紧密程度)的度量。模块之间的联系越紧密,联系越多,耦合性就越高,而独立性就越弱。内聚是对模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高,相对地,它与其他模块之间的耦合性就会越低,而模块独立性就越强。由此可见,模块独立性比较强的模块应是高内聚低耦合的模块。模块的内聚性分为7种,如图3-1所示。一般认为,巧合(偶然)、逻辑和时间上的聚合是低聚合性的表现;通信、信息和功能的聚合是高聚合性的表现。
图3-1 模块的内聚性耦合是对程序结构中模块相互关联的度量。耦合取决于各个模块间接口的复杂程度、调用模块的方式,以及哪些信息通过接口。一般模块之间可能的连接方式有7种,它们构成耦合性的7种类型,如图3-2所示。耦合是影响软件复杂程度的一个重要因素,在软件设计过程中,应尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合。
图3-2 模块的耦合性界面设计已经经历了两个界限分明的时代。第一代是以文本为基础的简单交互,如常见的命令行、字符菜单等。由于第一代界面对人的因素考虑太少,用户感受不太好。随着技术的发展,出现了第二代更易于直接操作的界面。它大量使用图形、语音和其他交互媒介,充分考虑了人对美的需求。直接操作的界面使用视听、触摸等技术,给人以良好的用户感受,可让用户愉快地完成任务。更高层次的界面甚至模拟了人的生活空间,例如虚拟现实环境。界面的美充分体现了人-机交互作用中人的特性与意图,越来越多的用户将通过具有吸引力而令人愉快的人-机界面与计算机打交道。在开发时期的每个阶段,特别是设计阶段结束时,都要进行严格的技术评审,尽量不让错误传播到下一个阶段。设计评审一般采用评审会议的形式来进行。3.2.3 软件测试软件测试是软件质量保证的主要手段之一,也是在将软件交付给客户之前必须完成的步骤。目前,软件的正确性证明尚未得到根本解决,软件测试仍是发现软件错误和缺陷的主要手段。软件测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件产品(主要是指程序)中的错误和缺陷。软件测试方法一般分为动态测试和静态测试两大类。1. 动态测试动态测试指通过运行程序来发现错误,分为黑盒测试法、白盒测试法和灰盒测试法。黑盒测试法是指,将被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。常用的黑盒测试用例设计方法有等价类划分、边值分析、错误猜测、因果图和功能图等。白盒测试法是指,将测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。 由于白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部逻辑为基础设计测试用例。常用的白盒测试用例设计方法有基本路径测试、循环覆盖测试、逻辑覆盖测试。灰盒测试是一种介于白盒测试与黑盒测试之间的测试,它关注输出对于输入的正确性。同时也关注内部表现,但这种关注不像白盒测试那样详细且完整,只是通过一些表征性的现象、事件及标志来判断程序内部的运行状态。2. 静态测试静态测试指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。静态分析中进行人工测试的主要方法有桌前检查、代码审查和代码走查。经验表明:使用这种方法能够有效地发现30%~70%的逻辑设计和编码错误。桌前检查由程序员自己检查自己编写的程序。程序员在程序通过编译之后,进行单元测试设计之前,对源程序代码进行分析、检验,并补充相关的文档,目的是发现程序中的错误。代码审查是由若干程序员和测试员组成一个会审小组,通过阅读、讨论和争议,对程序进行静态分析的过程。代码走查与代码审查的过程大致相同,但开会的程序与代码审查不同,代码走查不是简单的读程序和对照错误检查表进行检查,而是让与会者充当计算机,集体扮演计算机角色,让测试用例沿程序的逻辑运行一遍,随时记录程序的踪迹,供分析和讨论之用。3. 测试阶段根据测试目的、阶段的不同,可以将测试分为单元测试、集成测试、确认测试、系统测试等类型。(1)单元测试。又称模块测试,是针对软件设计的最小单位(程序模块)进行正确性检验的测试工作。其目的在于检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现模块内部可能存在的各种错误。(2)集成测试。也称组装测试、联合测试(对于子系统而言,则称为部件测试)。它主要是将已通过单元测试的模块集成在一起,来测试模块之间的协作性。集成测试计划通常是在软件概要设计阶段完成的。(3)确认测试。也称有效性测试,主要是验证软件的功能、性能及其他特性是否与用户要求(需求)一致。确认测试计划通常在需求分析阶段完成。(4)系统测试。如果项目不只包含软件,还涉及硬件和网络等,则要将软件与外部支持的硬件、外设、支持软件、数据等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列集成与确认测试,这称为系统测试。一般来说,系统测试的主要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装与反安装测试等。系统测试计划通常在系统分析阶段(需求分析阶段)完成。面向对象测试是与采用面向对象开发相对应的测试技术,它通常包括4个测试层次,从低到高排列分别是算法层、类层、模板层和系统层。性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行的测试。负载测试和压力测试都属于性能测试,两者可以结合进行,统称为负载压力测试。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。第三方测试指独立于软件开发方和用户方的测试,用这种方式组织的测试也称为独立测试。软件质量工程强调开展独立验证和确认(IV&V)活动,是由在技术、管理和财务上与开发组织具有规定程序独立的组织执行验证和确认过程。软件第三方测试是由相对独立的组织进行的软件测试,一般情况下是在模拟用户真实应用环境下,进行软件确认测试。第三方测试机构是一个中介性质的服务机构,它通过自己专业化的测试手段为客户提供有价值的服务。但是这些服务不同于公司内部的测试,因为第三方测试机构的测试除了发现软件问题之外,还有科学公正地评价软件的职能,这就要求该机构要保持公正、廉洁、客观、科学且独立的态度。3.2.4 软件维护软件在正式交付用户以后,就进入漫长的维护期,在这个阶段中的基本任务主要是保证软件在这段相当长的时期内能够正常运行。软件维护需要的工作量很大,随着时间的推移,软件维护给开发商带来的成本压力也越来越大。软件的维护活动基于软件是可维护的这一前提,因此在软件开发的各个阶段都考虑到有关软件可维护性的问题。依据软件本身的特点,软件的可维护性主要由可理解性、可测试性、可修改性三个因素决定。软件的维护从性质上分为:纠错型维护、适应型维护、预防型和完善型维护。尽管经过严格的测试,但并不能保证软件中完全没有错误,且随着运行时间的延续,数据量的积累,各种应用环境的变化,软件仍可能会暴露出一些错误,此时就要进行纠错型维护。随着计算机硬件新产品、操作系统新版本的不断推出,为适应不同的软硬件环境,正在运行的软件必须进行适应型维护,比如程序原来是在Windows 98操作系统上运行的,但需要移植到Windows 2000,就可能需要作一些适应新操作系统的适应性维护。用户逐渐熟悉软件以后,会提出一些改进需求。为了满足这些需求,就要进行完善型维护,这样的维护几乎占到维护工作量的一半以上。比如,打印格式的调整、统计口径的增加、业务流程的完善等。3.2.5 软件开发工具软件开发工具是用于辅助软件生命周期过程的基于计算机的工具。通常以设计并实现工具来支持特定的软件工程方法,减少手工方式管理的负担。与软件工程方法一样,它们试图让软件工程更加系统化,工具的种类包括支持单个任务的工具及囊括整个生命周期的工具。软件开发工具具体包括以下一些类型。(1)软件需求工具,包括需求建模工具和需求追踪工具。(2)软件设计工具,用于创建和检查软件设计,因为软件设计方法的多样性,这类工具的种类很多。(3)软件构造工具,包括程序编辑器、编译器和代码生成器、解释器、调试器等。(4)软件测试工具,包括测试生成器、测试执行框架、测试评价工具、测试管理工具、性能分析工具。(5)软件维护工具,包括理解工具(如可视化工具)和再造工具(如重构工具)。(6)软件配置管理工具,包括追踪工具、版本管理工具和发布工具。(7)软件工程管理工具,包括项目管理计划与追踪工具、风险管理工具和度量工具等。(8)软件工程过程工具,包括建模工具、管理工具、软件开发环境。(9)软件质量工具,包括检查工具和分析工具。3.2.6 构件与软件重用软件重用(软件复用)是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识,软件构件就是指这种可重用的元素,通常简称为构件。可重用的软件元素越大,就说重用的粒度越大。使用软件重用技术可以减少软件开发活动中大量的重复性工作,这样就能提高软件生产率,降低开发成本,缩短开发周期。同时,由于构件大都经过严格的质量认证,并在实际运行环境中得到检验,因此,重用构件有助于改善软件质量。此外,大量使用构件,软件的灵活性和标准化程度也能得到提高。构件开发的目的是重用,为了让构件在新的软件项目中发挥作用,构件库的使用者必须完成以下工作:检索与提取构件,理解与评价构件,修改构件,将构件组装到新的软件产品中。目前,国际上常用的构件标准主要有三个,分别是EJB、COMDCOMCOM 和CORBA。1.EJBEJB是用于开发和部署多层结构的、分布式的、面向对象的,基于Java应用系统跨平台的构建体系结构。使用EJB编写的应用程序具有可扩展性、交互性,以及多用户安全的特性。这些应用只需要写一次,就可以发布到任何支持EJB规范的服务器平台上。有三种类型的EJB,分别是会话Bean(Session Bean)、实体Bean(Entity Bean)和消息驱动Bean(Message-driven Bean)。一个会话Bean描述了与客户端的一个短暂的会话。当客户端的执行完成后,会话Bean和它的数据都将消失。实体Bean对应数据实体,它描述了存储在数据库表中的持久数据。如果客户端终止或者服务结束,底层的服务会负责保持实体Bean数据的持久性(也就是将其存储到某个地方,如数据库)。消息驱动Bean是EJB2.0新增的类型,它结合了一个会话Bean和一个JMS信息监听者的功能。客户将消息发给JMS目的地,然后JMS提供者和EJB容器协作,将消息发送给消息驱动Bean。2.COMDCOMCOM COM是个开放的组件标准,它有着很强的扩充和扩展能力。COM将组件的概念融入到Windows应用中。DCOM在COM的基础上添加了许多功能和特性,包括事务特性、安全模型、管理和配置等,使COM成为一个完整的组件架构。COM 使COM、DCOM和MTS形成一个全新的、功能强大的组件架构。DCOM是基于客户机和服务器模型的。客户程序和构件程序是相对的,进行功能请求调用的是客户程序,而响应该请求的是构件程序。构件程序也可以作为客户程序去调用其他构件程序,正是这种角色的转换和相互调用关系使构件程序最终构成一个软件 系统。COM 并不是COM的新版本,可以将它理解为COM的新发展,或者为COM更高层次上的应用。COM 的底层结构仍以COM为基础,它几乎包容了COM的所有内容。COM 倡导了一种新的概念,它将COM组件软件提升到应用层而不再是底层的软件结构,它通过操作系统的各种支持,使组件对象模型建立在应用层上,将所有组件的底层细节留给操作系统。COM 不再局限于COM的组件技术,它更加注重于分布式网络应用的设计和实现,已经成为Microsoft系统平台策略和软件发展策略的一部分。COM 继承了COM几乎全部的优势,同时又避免了COM实现方面的一些不足。COM 紧紧地与操作系统结合起来,通过系统服务为应用程序提供全面的服务。3.CORBACORBA是由OMG(Object Management Group,对象管理组织)制定的一个工业标准,其主要目标是提供一种机制,使得对象可以透明地发出请求和获得应答,从而建立起一个异质的分布式应用环境。由于分布式对象计算技术具有明显优势,OMG提出了CORBA规范来适应该技术的进一步发展。1991年,OMG基于面向对象技术,给出了以ORB(Object Request Broker,对象请求代理)为中心的对象管理结构。在OMG的对象管理结构中,ORB是一个关键的通信机制,它以实现互操作性为主要目标,处理对象之间的消息分布。对象服务实现基本的对象创建和管理功能,通用服务则使用对象管理结构所规定的类接口实现一些通用功能。针对ORB,OMG又进一步提出了CORBA技术规范,主要内容包括IDL(Interface Definition Language,接口定义语言)、IR(Interface Repository,接口池)、DII(Dynamic Invocation Interface,动态调用接口)、OA(Object Adapter,对象适配器)等。3.3 面向对象的分析与设计结构化的分析和设计方法在一定程度上缓解了软件危机。但随着人们对软件提出的要求越来越高,结构化方法已经无法承担快速高效开发复杂软件系统的重任。20世纪80年代逐渐成熟的面向对象方法学,使软件开发者对软件的分析、设计和编程等方面都有了全新的认识。由于对象概念的引入将数据和方法封装在一起,提高了模块的聚合度,降低了模块的耦合度,更大程度上支持了软件重用,从而十分有效地降低了软件的复杂度,提高了软件开发的生产率。
|
|