高等学校计算机专业规划教材:软件工程基础与应用(第2版) 9787302474111

配送至
$ $ USD 美元

编辑推荐

(1)以软件工程基本理论知识的普及和常用开发方法为出发点,对软件工程的主要原理、基本概念、主流技术方法的特点和使用规则、软件测试与维护的一般方法以及软件规模估算与项目的管理等进行了全面描述。
(2)既注重理论也强调实际应用,所述内容讲解清晰、实用,所画图形规范、统一,所选案例简明、完整。
(3)全书共10章,配合各章知识点的介绍,每章不但有简单举例和丰富的习题,而且还以一个规模和难度适中的项目为中心进行综合举例说明,并贯穿书中的主要章节,便于读者对所学内容的正确理解和实际应用的认识。

目录

目录
第1章概述/1
1.1软件的基本概念及特点1
1.1.1软件是什么1
1.1.2软件的分类3
1.1.3软件的发展5
1.2软件工程的提出6
1.2.1软件工程提出的导火索6
1.2.2软件工程的原理8
1.2.3软件工程的目标9
1.3软件开发方法10
1.3.1结构化方法10
1.3.2原型化方法11
1.3.3面向对象方法12
1.3.4敏捷开发方法13
1.4软件工程师的职业道德与素质14
本章小结15
习题16
第2章软件生存周期模型/17
2.1软件生存周期及其组成17
2.1.1软件生存周期的概念和提出的意义17
2.1.2软件生存周期的划分与组成18
2.2软件开发模型19
2.2.1瀑布模型20
2.2.2快速原型模型21
2.2.3增量模型22
2.2.4螺旋模型22
2.2.5喷泉模型23
2.3常用软件建模工具24
2.3.1Microsoft Visio24〖1〗软件工程基础与应用(第2版)目录[3]〖3〗2.3.2Rational Rose27
本章小结28
习题29
第3章用户需求调研与可行性分析/30
3.1用户需求调研30
3.1.1关于需求30
3.1.2用户需求调研的必要性30
3.1.3需求调研方法32
3.1.4调研内容和步骤32
3.2业务描述35
3.2.1业务流程定义35
3.2.2业务流程图36
3.3软件项目可行性分析39
3.4成本/效益分析41
3.4.1软件开发成本估算41
3.4.2软件效益分析42
本章小结44
习题44
第4章基于结构化方法的需求分析/45
4.1需求分析简述45
4.1.1何为需求分析45
4.1.2需求分析的主要任务46
4.1.3需求分析的原则47
4.1.4需求分析方法的分类48
4.2结构化分析48
4.2.1结构化分析的特点和原则48
4.2.2结构化分析的主要工具49
4.3数据流程图的构建50
4.3.1构建数据流程图的作用50
4.3.2数据流程图的基本符号51
4.3.3构建数据流程图的步骤52
4.3.4构建数据流程图需要注意的问题53
4.4数据字典56
4.4.1构建数据字典的意义和用途56
4.4.2数据字典的主要内容56
4.4.3构建数据字典使用的符号57
4.4.4数据字典举例58
4.5结构化分析建模综合举例58
4.5.1系统数据流程图58
4.5.2系统数据字典61
本章小结64
习题64
第5章系统概要设计/66
5.1简述66
5.1.1概要设计基本任务66
5.1.2概要设计基本方法67
5.2概要设计基本原理69
5.2.1模块化69
5.2.2抽象70
5.2.3逐步求精70
5.2.4信息隐藏和局部化71
5.2.5模块独立性71
5.3结构化系统设计74
5.3.1软件结构图种形式74
5.3.2数据流程图的分类75
5.3.3变换型设计76
5.3.4事务型设计77
5.4软件结构的其他描述工具——HIPO图81
5.5软件结构的优化准则83
5.6结构化设计综合举例85
本章小结88
习题88
第6章详细设计与编码实现/90
6.1详细设计的基本任务90
6.2详细设计的常用工具90
6.2.1程序流程图91
6.2.2盒图92
6.2.3PAD图93
6.2.4判定表与判定树93
6.2.5过程设计语言的使用95
6.3人机界面的设计96
6.3.1人机界面一般风格97
6.3.2人机界面设计原则及相关问题99
6.3.3人机界面设计过程100
6.4详细设计综合举例100
6.4.1人机界面100
6.4.2数据库表设计101
6.4.3模块设计103
6.5编码实现106
6.5.1编码工具介绍106
6.5.2编码工具的选择107
6.5.3编码原则107
6.5.4编码举例108
本章小结111
习题112
第7章面向对象技术/113
7.1面向对象概述113
7.1.1面向对象提出的背景113
7.1.2面向对象方法简介114
7.1.3面向对象基本概念115
7.1.4面向对象的特征118
7.2面向对象分析119
7.2.1面向对象分析任务概述119
7.2.2面向对象分析模型120
7.2.3面向对象分析过程126
7.3面向对象设计128
7.3.1面向对象设计任务128
7.3.2面向对象设计与面向对象分析的关系129
7.3.3面向对象设计基本原则130
7.3.4面向对象设计模型132
7.3.5面向对象设计过程132
本章小结135
习题135
第8章UML建模/137
8.1UML概述137
8.1.1发展历史137
8.1.2UML简介138
8.1.3视图138
8.1.4UML中的图139
8.2用例模型的构建140
8.2.1用例图的模型元素141
8.2.2确定参与者142
8.2.3确定用例142
8.3静态模型的构建146
8.3.1类图和对象图146
8.3.2标识类的方法150
8.3.3包图153
8.4动态模型的构建156
8.4.1顺序图156
8.4.2协作图157
8.4.3状态图和活动图158
8.5物理体系结构的构建161
8.5.1组件图161
8.5.2部署图162
8.6综合实例163
8.6.1系统分析163
8.6.2系统设计172
8.6.3物理结构设计176
本章小结180
习题181
第9章测试与维护/183
9.1软件测试简介183
9.1.1测试定义183
9.1.2软件测试的原则184
9.1.3软件测试的对象185
9.2软件测试模型185
9.2.1V模型185
9.2.2W模型186
9.3软件测试的一般过程187
9.3.1测试需求分析阶段187
9.3.2测试计划阶段187
9.3.3测试方案设计阶段188
9.3.4测试用例实现阶段188
9.3.5测试执行阶段188
9.3.6评价与关闭阶段189
9.4软件测试常用方法189
9.4.1黑盒测试与白盒测试189
9.4.2黑盒测试法189
9.4.3白盒测试法194
9.5面向对象测试197
9.6软件测试自动化与测试工具199
9.6.1软件测试自动化199
9.6.2软件测试工具200
9.7软件调试201
9.7.1软件调试基本概念201
9.7.2软件测试和软件调试的区别201
9.7.3软件调试的步骤201
9.7.4软件调试方法202
9.8软件维护203
9.8.1软件维护的定义203
9.8.2影响维护工作量的因素203
9.8.3软件维护成本204
9.8.4软件维护过程204
9.8.5软件的可维护性与提高方法206
本章小结207
习题207
第10章软件项目管理/209
10.1软件规模估算209
10.1.1软件规模估算概述209
10.1.2软件规模估算常用方法210
10.2风险管理211
10.2.1软件项目风险定义及管理重要性211
10.2.2风险识别212
10.2.3风险分析及量化212
10.2.4风险应对计划212
10.2.5风险监控213
10.3人员组织213
10.3.1团队管理概述213
10.3.2软件项目组织计划213
10.3.3项目组织形式214
10.3.4团队的组建215
10.3.5团队合作与沟通217
10.4进度管理217
10.4.1进度管理定义217
10.4.2进度管理过程217
10.4.3软件项目任务分解218
10.4.4软件项目进度计划219
10.4.5进度控制223
10.5质量管理224
10.5.1软件质量的定义224
10.5.2软件质量模型225
10.5.3软件质量保证226
10.5.4软件质量控制226
本章小结228
习题228
参考文献/230

序言


软件工程学科的发展有其历史的必然。近半个世纪以来,随着通信、计算机、网络应用的普及,作为其灵魂的软件的开发显得越来越重要。无数的反例证明,如果软件产品的质量达不到要求,带来的损失是极其严重的。为保证或提高软件产品的质量,最关键的问题就是从技术和管理两方面双管齐下,使用得到实际考验的一系列理想软件开发实践,作为我们工作的指导原则,切实做好软件开发的各项活动。
有人讲,软件工程课程学不学没有用处。事实上是这样吗?绝对不是。我在给清华大学计算机系的工程硕士上软件工程课的时候,他们说,他们上的所有课程中,这门课最有用。因为他们都是从事软件开发多年的在职研究生,他们反映,多年来困惑他们的很多问题,从课程中都能找到对应的解决方法。有时,看上去是一句普通的“原则”,在实践上却能解决大问题。所以,虽然课本中讲了许多条条框框,其实都是有其实践背景的。
还有人讲,软件工程这门课程太枯燥,听不懂,做不会,学习起来提不起兴趣。这就是学习方法问题了。软件工程有一条主线,即软件生命周期过程。它的特点是分阶段、有迭代。
从软件开发方法来看,不论是传统的结构化方法,还是面向对象方法,或新的面向服务架构,它们都有各自的适用领域,有不同的视角、不同的活动组织方式和不同的架构。
从软件工程过程来看,最基本的是开发过程、运行过程和维护过程,此外还有各种支持过程和组织过程,它们为基本过程提供辅助支持和各种保证。
从软件工程管理来看,有整体管理,包括启动、计划、执行、控制和收尾5大过程,此外,还要考虑需求、成本、进度、质量、人员、沟通和风险等方面的管理活动。
如果我们明确了软件工程的主要方面,就可以有目的、系统地进行课程的学习了。
总之,对于软件工程,应首先想到它是有用的,也可能将来工作后用不到操作系统原理、计算机原理等课程所讲的内容,但只要是从事软件开发,软件工程就是回避不了的。其次,要有它不难学的思想。关键是对将来自己工作的领域要有规划,找准方向,有针对性地学习。特别地,由于社会需求〖1〗软件工程基础与应用(第2版)序[3]〖3〗是不断变化的,软件开发技术是不断进步的,软件开发工具是层出不穷的,我们不要一味追求新的,而应该从最成熟、最可靠的技术和工具学起。在学校里打好基础,将来在工作中就很容易接受新东西。
马小军老师从事软件工程的教学已经20多年了,我与她的相识是在20世纪90年代初她听我的软件工程课的时候。她是一位对工作很认真的老师,在这么多年的教学中已经积累了丰富的教学经验,并领导了许多软件开发项目,从如何培养应用型技术人才角度出发,对软件工程的教学体系、课程内容选材和实践活动组织等各方面都有很好的想法,这本教材的编写就体现了她的教学思路和多年教学的体会,有理论,有案例,全书在内容组织方面注重科学性和系统性,在行文叙述方面颇具简洁性和可读性。我推荐同学们认真阅读,切实领会其实质,不断进步。

清华大学计算机系教授殷人昆
2013年7月

第2版前言

基于近几年来使用本书第1版开展“软件工程”课程教学的感受以及师生们对一些问题的认识与研讨,同时结合软件领域技术的使用状况,本书第2版更注重软件工程基本理论和技术在当前软件开发领域中的实用性、学生在学习过程中的易理解性以及核心概念和技术的拓展应用,主要做了如下调整:
(1) 增加了对软件工程师职业道德及基本素质的论述,使学生对未来成为一名软件工程师有初步的了解。
(2) 略掉了近几年较少使用且容易造成学习和理解障碍的概念和形式化使用,例如受限关联、链属性等。
(3) 对一些常用且很重要的概念、名词和技术使用方法等,则调整了论述的方式,增强了条理性,并加大举例说明的力度,同时也更注重举例的可理解性与前后连贯性,例如模块结构图的理想与最差设计、UI设计、面向对象技术与UML建模过程中类的抓取等。
(4) 针对测试工作重要性的不断提升,特别是Web类软件和游戏类软件的大量推出,测试技术与方法也得到了不断的扩充与完善,增加了自动化测试技术和工具的介绍。
(5) 伴随各章进行系统化应用学习的综合案例被完整替换,选择的是国内所有高校大学生每年都会亲身参与的体能测试活动作为背景,分别采用结构化技术和面向对象技术,进行了项目需求定义、系统分析和系统设计等开发过程的系统化详细论述。对于其他非高校学生读者,鉴于一般也都有体测的经历,与此案例有极大的相似之处,学习理解应该也比较容易。选择此项目的另一个考虑是,测试活动很有可能随着要求和地域的不同发生变化,学生则可以根据已给出的分析和设计成果进行相应的方案调整练习,从而达到理论与实践及时的结合。
(6) 对各章后的练习题都做了调整,不仅增加了对一些容易混淆概念的对比理解题,还增加了一些激励学生结合实际体会或兴趣进行分析思考的题目,以期使学生将原以为枯燥的学习、抽象的技术概念能够马上用于实际问题的解决,提高继续学习的兴趣和热情。
本书第2版的编写依然遵循内容实用和系统化、图形规范和一致的原则,融入了多年的教学和实践经验,并采用通俗易懂的语言和简明完整的举例进行表述。书中所有图形(除界面截图以外)均采用Microsoft Office Visio 2007或2010绘制。〖1〗软件工程基础与应用(第2版)本书共计10章,马小军作为总负责人,提出了总体修改方案,并修改、编写了第1~6章,第7~10章由张玉祥修改、编写。
在本书第2版的修改编写过程中,获得了“北京联合大学‘十三五’规划教材建设项目”的资助,也得到了张冰峰、马楠和廖礼萍三位老师的支持和协助,同时又参阅了大量的文献和资料,为最终内容的筛选与论述提供了丰富的借鉴,在此向这些老师、北京联合大学领导和专家以及文献资料的作者再次表示衷心的感谢。
由于时间关系且作者水平有限,书中难免会存在问题和不妥之处,真诚地希望广大读者和软件工程领域的专家能够提出宝贵的意见和建议,我们会虚心地接受并认真思考、修正。作者联系方式: xxtxiaojun@buu.edu.cn。

编者
2017年6月于北京

第1版前言

软件工程以研究如何高效率地开发高质量、高可靠性、易维护的软件产品为核心内容,自从20世纪60年代末推出以来,对软件产业的发展起到了巨大的推动作用。软件工程思想的严谨性、开发过程的规范化,为软件项目开发提供了理论保障;各种开发技术和开发方法的涌现和使用,计算机硬件性能的极大提高,以及网络技术和多媒体技术等的不断完善,为开发功能健全、性能良好、用户满意的软件,提供了技术支持。由此也促进了软件在各行各业、各个领域中的广泛应用,成为企事业单位全面实现信息化建设的核心内容。随着软件应用的广泛化与内部功能更新的频繁化,用户对软件质量和健壮性的要求更加突出,只有严格遵循工程化和规范化思想的指导,软件开发才可能获得成功。
在很多人的概念里,软件开发就是编写程序,即便是一些公司里面的技术人员,对软件工程也缺乏正确的认识,项目开发过于随意,导致公司虽然能够获得了眼前的经济效益,但因产品在后期不断出现问题,直接影响了企业的形象,长远收益大打折扣。21世纪以来,软件工程作为独立的学科体系,与计算机科学、信息工程、计算机工程等并存,体现出国家对软件技术人才的培养更加重视。信息化发展步伐的迈进,使软件人才的社会需求量也显著提高。软件开发不再是软件专业学生独自掌握的知识和专有技能,而变得更加大众化和普遍化。因软件工程不仅强调技术及其应用,也是一种分析问题和解决问题的思想和方法。所以,系统学习软件工程的知识,对任何专业、将来做任何工作的人而言,都是十分有意义和必要的。
目前市面上出版的软件工程教材比较多,所介绍的理论知识和开发技术也很全面,但各部分的举例不够系统性,特别是对于一些非计算机专业的学生而言, 欠缺很多软件方面的专业基础知识,理解起来有一定困难。其结果导致对各章节知识的理解和持续性,特别是技术方法的完整运用,学生难以体会和感受。
为此,我们结合对软件工程的了解与感悟以及多年的教学体会与经验,对软件工程的基本概念、基本理论和主流技术进行系统梳理后编写了本书,书中不仅进行了理论、技术和工具的介绍,同时选择了一个难度和规模适中且学生容易理解的项目作为综合案例,在书中的主要章节贯穿描述,目的是帮助学生正确理解所学内容,系统化地掌握和认识软件工程的思想、技术在实际开发中的具体运用,从而使教材的阅读、学习达到理论与实践的密切结合。
全书共10章,依照软件生存周期的理念展开叙述,具体内容如下。
第1、2章是软件工程综述,主要介绍软件的概念和特点,软件工程提出的背景和基本原理,几种主流开发方法,软件生存周期的组成和开发模型,以及常用的建模工具等。
第3章是需求调研与可行性研究,主要介绍需求调研的基本方法、用户业务流程的描述、项目可行性分析及软件成本/效益分析的常用方法等。
第4、5章是系统分析与设计,重点介绍基于结构化技术的分析与设计方法,包括主要任务、工作原理、基本原则,以及数据流程图、数据字典和软件结构图的构建与优化等。
第6章是详细设计与编码实现,主要介绍算法的常用描述工具、界面设计需要注意的问题以及一般编码原则等。
第7、8章是基于面向对象技术的分析与设计方法以及统一建模语言UML,主要介绍面向对象分析与设计的基本原理、工作过程以及面向对象技术和UML中的主要视图模型与构建方法等。
第9章是软件测试技术与维护,主要介绍测试的概念与方法、软件调试的步骤与方法以及软件维护的概念、影响维护的因素和提高可维护性的方法。
第10章是软件项目管理,主要介绍软件规模估算方法、风险分析与监控、人员的组织与管理、进度与软件质量的控制等。
作为主编,马小军负责本书的结构组织、综合案例的确定和统稿,并编写了第1章、第2章和第4章,廖礼萍编写了第5章、第7章和第8章,第3章、第9章和第10章由张冰峰编写,第6章由马楠编写。全书由马小军统稿。
在本书的编写过程中,参阅了大量的文献和资料,在此向这些文献资料的作者深表崇敬之意并衷心的感谢。
本书的编写以北京联合大学信息学院软件工程平台课教学改革为依托,突出内容的实用性和系统化以及图形的规范化和一致性,语言通俗易懂,结构编排合理;所有举例简明、完整,同时,书后配有丰富的习题。书中所有图形(除界面截图以外)均是用Microsoft Office Visio 2007绘制的。
本书既可作为高等院校相关专业本科生软件工程课程的教材或参考书,也可作为项目管理人员、应用软件开发人员和专业技术人员的技术参考资料。
我们希望读者通过阅读本书,了解软件工程的理念,理解二种主流技术的特点和基本原则,掌握各种模型和建模工具的使用。同时,通过综合举例,感受软件项目开发过程中系统分析和系统设计的关系与具体实施方法,为今后独立从事一个小型软件项目的开发提供参考和帮助。但由于时间关系且作者水平有限,书中难免会存在问题和不妥之处,真诚地希望读者和软件工程领域专家能够提出宝贵的意见和建议,以帮助我们逐步完善和修正。作者联系方式: xxtxiaojun@buu.edu.cn。

〖1〗软件工程基础与应用(第2版)前言[3]〖3〗编者
2013年5月于北京

文摘

第5章系统概要设计需求分析中得到的系统分析模型解决了“系统必须做什么”的问题,而“系统怎么做”是由系统概要设计来完成的。概要设计的基本目的就是回答“系统应该如何实现?”这个问题。通过这个阶段的工作将划分出组成系统的物理元素: 模块、文件、数据库等等,但是每个物理元素仍然为“黑盒子”——即内部结构是不可见、不明确的。概要设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。
本章主要介绍系统概要设计的任务、基本原理、概要设计的基本方法以及软件结构的描述工具。
本章要点:
 概要设计的基本任务;
 概要设计基本原理;
 内聚和耦合;
 结构化设计: 软件结构图、变换型和事务型设计;
 软件结构的优化。
5.1简述
我们知道,软件设计是把一个软件需求转换为软件表示的过程,而概要设计(又称结构设计)就是软件设计最初形成的一个表示(这里的表示是一个名词),它描述了软件总的体系结构。简单地说,软件概要设计就是设计出软件的总体结构框架。
5.1.1概要设计基本任务
软件概要设计阶段要完成的任务主要体现在这样4个方面: 软件结构设计、数据结构及数据库设计、编写概要设计文档、设计评审。
1. 软件结构设计
在需求分析阶段,采用结构化技术已经通过抽象确定出软件系统的功能,并按自顶向下分层描述的方法构建出功能模型——数据流程图,而在概要设计阶段,需要进一步分解,将逻辑功能转化为功能模块,并按层次体现模块间的结构。具体过程如下:
(1) 采用某种设计方法,将一个复杂的系统按功能划分成模块。所谓模块就是可独立存在、有命名且可直接访问的程序单元,每个模块完成一个相对独立的功能,通常具有功能、逻辑、接口和状态等4个基本属性。
(2) 确定每个模块的功能。
(3) 确定模块之间的调用关系。
〖1〗软件工程基础与应用(第2版)第5章系统概要设计[3]〖3〗(4) 确定模块之间的接口,即模块之间传递的信息。
(5) 评价模块结构的质量。
2. 数据结构及数据库设计
对于大型数据处理的软件系统,数据是系统的核心内容和处理对象,对数据进行准确定义和描述是系统概要设计的重要工作,其中包括数据结构及数据库设计两方面的内容。
(1) 数据结构的设计。逐步细化的方法也适用于数据结构的设计。在需求分析阶段,已通过数据字典对数据的组成、操作约束、数据之间的关系等方面进行了描述,确定了数据的结构特性,在概要设计阶段要进一步细化。
(2) 数据库的设计。数据库的设计指数据存储文件的设计,主要进行以下几方面设计:
 逻辑设计。在ER模型的基础上,结合具体的DBMS特征来建立数据库的逻辑结构。对于关系型的DBMS来说,将概念结构转换为数据库表结构,要给出数据库表结构的定义,即定义所含的数据项、类型、长度及它们之间的层次或相互关系的表格等。
 物理设计。物理设计就是设计数据模式的物理细节,如数据项存储要求、存取方式、索引的建立等。
3. 编写概要设计文档
按照软件工程的理念和生存周期的要求,在概要设计结束之前,需要编写概要设计文档,为后期软件实现、修改和升级打下基础,同时也为用户使用提供帮助。在概要设计阶段,主要有以下文档需要编写:
(1) 概要设计说明书。
(2) 数据库设计说明书。
(3) 用户手册。
(4) 测试计划的修订版。
4.评审
概要设计的最后一个任务就是评审,在概要设计中,对设计部分是否完整地实现了需求中规定的功能和性能要求、设计方案的可行性、关键的处理和内外部接口定义正确性与有效性以及各部分之间的一致性等都要进行评审,以免在后续设计实现中出现大的问题而返工。
以上就是软件概要设计的4个基本任务,可以用8个字总结概括: 两类结构,文档评审。
5.1.2概要设计基本方法
软件概要设计的方法主要有结构化设计、面向对象的设计和面向数据结构的设计。本节主要介绍这几种广泛使用的概要设计方法。
1. 结构化设计方法
结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等技术思想的基础上发展起来的。结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术,与结构化分析方法衔接起来使用,以数据流程图为基础导出软件的模块结构。在设计过程中,它从整个软件的结构出发,利用软件结构图表述模块之间的调用关系。
结构化设计的步骤如下:
(1) 评审和细化数据流程图。
(2) 分析并确定数据流程图的类型。
(3) 基于上层数据流程图映射出软件模块结构的上层框架。
(4) 基于下层数据流程图逐步分解高层模块,设计中下层模块结构。
(5) 对模块结构进行优化,得到更为合理的软件结构。
(6) 描述模块接口。
2. 面向对象设计方法
面向对象设计方法是面向对象技术中的一个环节,是对面向对象分析的模型进行完善设计。面向对象分析方法是把问题当作一组相互作用的实体,并确定实体间的关系。而面向对象设计更多地关心对象间的协作。
面向对象设计的主要作用是对分析模型进行整理,生成设计模型,为面向对象编程提供开发依据。面向对象设计内容包括架构设计、用例设计、子系统设计和类设计等。其中,架构设计的重点在于系统的体系框架的合理性,保证系统架构在系统的各个非功能性需求中保持一种平衡;子系统设计一般是采用纵向切割,关注的是系统的功能划分;类设计是通过一组对象交互展示系统的逻辑实现。具体论述详见7.3节。
3. Jackson设计方法
该方法由M.A.Jackson提出,其特点是从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其他细节,即能够得到完整的程序结构图。这一方法对输入、输出数据结构明确的中小型系统特别有效,如商业应用中的文件表格处理。该方法也可与其他方法结合,用于模块的详细设计。
Jackson方法有时也称为面向数据结构的软件设计方法。该方法一般通过以下5个步骤来完成设计:
(1) 分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图来表示这些数据结构。
(2) 找出输入数据结构和输出数据结构中有对应关系的数据单元。
(3) 按以下的规则由输入、输出的数据结构导出程序结构。
 为每一对在输入数据结构和输出数据结构中有对应关系的单元画一个处理框。
 为输入和输出数据结构中剩余的数据单元画一个处理框。所有处理框在程序结构图上的位置,应与由它处理的数据单元在数据结构Jackson图上的位置一致。必要时,可以对映射导出的程序结构图进行进一步的细化。
(4) 列出对每一对输入、输出数据结构所做的基本操作以及操作的条件,并把它们分配到程序结构图的适当位置。
(5) 用伪码写出每个处理框的算法。
5.2概要设计基本原理
本节讲述在软件设计过程中应该遵循的基本原理和相关概念。
ISBN9787302474111
出版社清华大学出版社
作者马小军、张玉祥
尺寸16