新書推薦:
《
明代社会变迁时期生活质量研究
》
售價:NT$
1367.0
《
律令国家与隋唐文明
》
售價:NT$
332.0
《
紫云村(史杰鹏笔下大唐小吏的生死逃亡,新历史主义小说见微之作,附赠5张与小说内容高度契合的宣纸彩插)
》
售價:NT$
449.0
《
现代吴语的研究(中华现代学术名著3)
》
售價:NT$
296.0
《
天下的当代性:世界秩序的实践与想象(新版)
》
售價:NT$
352.0
《
德国天才4:断裂与承续
》
售價:NT$
500.0
《
妈妈的情绪,决定孩子的未来
》
售價:NT$
194.0
《
推拿纲目
》
售價:NT$
1836.0
|
編輯推薦: |
本书面向软件设计初学者和有一定经验的软件设计师,介绍和探讨软件设计活动中蕴藏的基础理论和原则,突出软件设计关键理论和决策中的质量和审美追求,包括程序设计与正确性、复杂软件设计与模块化、信息隐藏及其背后的可修改性等质量、大规模系统体系结构设计与可靠性等系统质量。主要特点总结和探讨了软件设计的基础要素,包括软件设计的根本目标、衡量标准、抽象与分解、物理与逻辑、设计决策等。基于基础要素分析各种软件设计方法和技术的关键考虑点,包括结构化编程理论、类型、模块化、信息隐藏、软件设计方法学、软件体系结构理论等。始终贯彻软件设计的基础要素,尤其是质量和审美观念,分析不同规模软件设计活动对方法和技术的要求,包括小规模软件的程序正确性,中大规模系统的可修改性,大规模软件系统的可靠性、性能、安全等。结合案例解释较为晦涩难懂的设计方法和技术,力求做到深入浅出。
|
內容簡介: |
软件设计是软件开发的核心活动,软件设计理论的发展推动着软件工程的发展。本书梳理了基础的软件设计理论,可帮助读者更好地理解各种软件设计技术。全书共分为5章,第1章介绍软件设计基础原则;第2章介绍程序设计,帮助读者深刻认识程序设计工作背后的机理,而不是仅仅停留在掌握一门或几门程序设计语言上;第3章介绍复杂软件设计,重点包括模块化设计、信息隐藏与设计原则;第4章介绍软件设计方法学,指导读者用系统化、规范化的方式开展软件设计活动,解决软件设计问题;第5章介绍大规模软件系统设计,关注可靠性、效率、可移植性、市场特性、人员与分工等各种要素。
本书适合作为软件工程相关专业本科生和研究生的教材,也可作为软件领域相关技术人员的参考书。
|
關於作者: |
曾任职南京大学软件学院教师、院长助理,主讲软件需求工程和软件设计课程。先后多次获得国家级、省部级教学奖项,出版著作多部。
近些年创立源图品牌,从事软件产业的人才数字化管理工作,包括岗位胜任力定义、能力测评、个性化培养、人才画像与盘点等,成功服务于数十家国内头部金融企业和数百家软件企业。
|
目錄:
|
目录
前言
第1章 软件设计基础原则 1
1.1 什么是软件设计 1
1.1.1 设计是一种“规划” 1
1.1.2 软件的材料载体与广义的软件设计内涵 2
1.1.3 狭义的软件设计内涵 2
1.2 为什么要进行软件设计 2
1.3 复杂度控制的关键之一: 设计分层 3
1.3.1 分层抽象方法 3
1.3.2 软件设计的分层 3
1.3.3 设计层次验证 4
1.3.4 软件设计分层要点 4
1.3.5 产品设计与工程设计 5
1.4 复杂度控制的关键之二:关注点分离 6
1.4.1 分离设计主题 6
1.4.2 多视点方法 6
1.5 软件设计的目标与衡量标准 7
1.5.1 根本标准:功能、质量、审美 8
1.5.2 设计目标和衡量标准应用示例 8
1.5.3 功能是设计方案的特征 12
1.5.4 质量是工程设计的重点 12
1.5.5 审美是超越合格达到优秀的路径 14
1.5.6 软件设计的结果是一种折中与妥协 16
1.6 外部表现与内部结构 17
1.6.1 软件设计的重点是坚固、优雅的内部结构 17
1.6.2 外部表现和内部结构的区分示例 17
1.6.3 抽象、分解与层次结构 21
1.6.4 常见的设计对象及其外部表现和内部结构 23
1.6.5 设计整个系统时区分外部表现和内部结构 24
1.6.6 设计模块时区分外部表现和内部结构 25
1.6.7 设计类时区分外部表现和内部结构 29
1.6.8 设计数据结构时区分外部表现和内部结构 33
1.6.9 设计代码时区分外部表现和内部结构 34
1.7 逻辑设计与物理设计 35
1.7.1 载体介质及其匹配 35
1.7.2 区分逻辑设计与物理设计 35
1.7.3 设计数据类型时逻辑设计与物理设计的失配 36
1.7.4 设计数据结构时逻辑设计与物理设计的失配 37
1.7.5 设计面向对象机制时逻辑设计与物理设计的失配 37
1.7.6 设计模块时逻辑设计与物理设计的失配 38
1.7.7 设计质量时逻辑设计与物理设计的失配 38
1.8 软件设计是持续决策的过程 39
1.8.1 设计结果与设计过程 39
1.8.2 决策的要素 39
1.8.3 设计是一个跳跃性过程,验证设计是一个推理过程 40
1.8.4 选择一个可行答案,没有唯一正确答案 40
1.8.5 设计决策有顺序影响,而且影响不可逆 41
1.8.6 设计约束:是友非敌 41
1.9 工程与艺术 42
1.9.1 工程设计与艺术设计 42
1.9.2 理性主义与经验主义 42
1.9.3 设计兼具科学性与艺术性 43
1.10 总结 43
第2章 程序设计 44
2.1 如何保证程序正确性 44
2.1.1 像设计硬件一样设计软件吗 44
2.1.2 测试不能保证正确性 45
2.1.3 用程序设计方法实现正确性 45
2.2 结构化编程与功能正确性 46
2.2.1 使用简单结构—三种控制结构 46
2.2.2 使用块结构组织复杂代码 48
2.2.3 兼顾正确性与复杂度控制:函数/方法 54
2.3 数据抽象、类型与数据操作正确性 55
2.3.1 类型 55
2.3.2 结构化类型:强正确性保证 56
2.3.3 非结构化类型:弱正确性保证 57
2.3.4 复杂抽象数据类型(数据结构)及其质量 60
2.4 程序契约与正确性 62
2.4.1 前置条件与后置条件 62
2.4.2 不变量 63
2.4.3 程序契约的局限性 64
2.5 面向对象编程与可复用性 64
2.5.1 可复用性需要的出现 64
2.5.2 面向对象编程与可复用性 65
2.5.3 类和对象 65
2.5.4 封装 68
2.5.5 继承 71
2.5.6 多态 73
2.6 软件构造与更多代码质量 73
2.6.1 什么是软件构造 73
2.6.2 软件构造技术与代码质量 74
2.6.3 软件构造技术示例 75
2.7 总结 81
第3章 复杂软件设计 82
3.1 控制更高的复杂度需要模块 82
3.1.1 模块 82
3.1.2 模块分解质量与模块化、信息隐藏 83
3.2 模块化 83
3.2.1 模块分割的质量考虑 83
3.2.2 理想中的模块分割—完全独立 83
3.2.3 现实中的模块分割—低耦合、高内聚 84
3.2.4 代码组织及联系方式分析 84
3.3 (结构化)函数/方法之间的耦合 86
3.3.1 内容耦合 86
3.3.2 公共耦合 88
3.3.3 控制耦合 90
3.3.4 印记耦合 92
3.3.5 数据耦合 95
3.3.6 隐式的耦合 97
3.3.7 函数/方法之间的耦合小结 100
3.4 (结构化)函数/方法的内聚 101
3.4.1 偶然内聚 102
3.4.2 逻辑内聚 102
3.4.3 时间内聚 103
3.4.4 过程内聚 104
3.4.5 通信内聚 106
3.4.6 顺序内聚 107
3.4.7 功能内聚 108
3.4.8 函数/方法的内聚小结 110
3.5 (面向对象)类/对象之间的耦合 110
3.5.1 类/对象之间的耦合类型 110
3.5.2 方法之间的
|
內容試閱:
|
前 言
软件设计是软件开发的核心活动,软件设计理论的发展推动着软件工程的发展。很多基础的软件设计理论因为产生时间较早,已经很少被人提及,但它们仍然是理解软件设计、做好软件设计活动的基础。
本书的目的是重新将这些基础的软件设计理论梳理出来,作为学习软件设计新方法的基础,帮助读者更好地理解各种软件设计技术。
本书的基本思路是:
1)介绍最为基础的软件设计理论,包括结构化编程理论、类型、模块化、信息隐藏、面向对象设计原则、软件设计方法学、软件体系结构理论等。这些理论构成了不同阶段、不同类型软件设计活动的基础。
2)始终贯彻软件设计最为重要的质量观念。从小规模软件的程序正确性,到中大规模系统的可修改性,再到大规模软件系统的可靠性、性能、安全性等质量,关注各种设计理论对这些质量的满足能力。
3)书中设计了大量案例,通过案例解释较为晦涩难懂的设计方法和技术,力求做到深入浅出。
4)探索软件设计的根本目标、衡量标准、抽象与分解、物理与逻辑等较为深入的内容,希望能帮助读者更深刻地理解软件设计。
在过去的数年间,作者多次尝试写作本书,都因为各种缘由耽搁下来。直到这次,终于有时间完成。其中必有不足之处,希望后续能在读者的反馈中完善。有建议和意见的读者可以联系eryuding@hotmail.com。
本书写作过程中,得到了家人和朋友的大力支持。非常感谢他们,没有他们的鼓励,我可能没有毅力坚持完成本书的写作。
作者
2024年1月于南京
|
|