软件设计ppt
- 格式:pdf
- 大小:441.87 KB
- 文档页数:30
PDF
1. 软件设计基本概念
1.3 漫谈设计模式
u 20世纪90年代,面向对象(Object-Oriented)方法与技术在国内软件业界十分火爆,人们热衷于 谈论“对象”并引以为荣。十多年来,人们发表、出版了无数的文章和书籍。现在,该写的似乎 都写完了,没有新花样玩了,真是一片无聊。设计模式(Design Pattern)及时问世,面向对象爱 好者们终于有了新的追求。
u 数据结构与算法如同人的神经和肌肉,它分布在全身,让器官具有生命并能发挥功能。人之所以 能够全身运动,那是无数的神经和肌肉在起作用。如果局部的神经和肌肉失效了,那么会导致对 应的器官残废。如果全局的神经和肌肉失效了,那么人就瘫痪了。同理,数据结构与算法也有全 局和局部之分,都要慎重设计。
Page 5
u 设计的好坏在根本上决定了软件的优劣。我们可以断言“差的系统设计必定产生差的软件系统” ,但是不能保证“好的系统设计必定产生好的软件系统”。因为在设计之前有需求开发工作,在 设计之后还有编程、测试和维护工作,无论哪个环节出了差错,都会把好事搞砸了。 – 据说上帝把所有的女士都设计成天使,可是天使们在下凡的时候,有些人双脚先着地,有 些人脸先着地。上帝的这一疏忽让很多女士伤透了心。所以我们在开发软件时,一定要吸 取这个教训。
u 著名3D游戏软件Quake设计师Michael Abrash 的总结:“所有真正杰出的设计一旦被设计好,看起 来都是那么的简单和显而易见。但是在获得杰出设计的过程中,需要付出令人难以置信的努力。 ”
Page 3
PDF
1. 软件设计基本概念
系统设计过程示意图
Page 4
1. 软件设计基本概念
1.2 软件系统与人体的比喻
u 软件设计之源是软件需求,包括“功能性需求”与“非功能性需求”。设计的目标就是使所设计 的系统能够被开发方顺利地实现,并且恰如其分地满足用户的需求,使开发方和用户的利益极大 化。开发人员不万不能偏离需求,为了追求技术的先进性而开展系统设计工作。
u 依据“分而治之”的思想,我们把系统设计过程划分为两个阶段:高层设计阶段和详细设计阶段 。高层设计阶段的重点是系统结构设计。详细设计阶段的重点是用户界面设计、数据库设计、模 块设计、数据结构与算法设计等。
上海漫索计算机科技有限公司
软件设计
—— 帮助你从程序员上升为设计师 —— 搞清楚设计什么以及如何设计
目录
1. 软件设计基本概念 2. 体系结构设计 3. 用户界面设计 4. 数据库设计 5. 模块设计 6. 数据结构与算法设计 7. 小结
Page 2
1. 软件设计基本概念
1.1 基本概念
u 设计师与程序员的地位。软件设计的技术难度要比编程、测试的高。所以程序员、测试员称为“ 员”,而设计师尊称为“师”。
u 数据库是存储和处理数据用的。人体的数据库是大脑,知识相当于数据,全存在大脑里。如果脑 子里存储的知识很多,那么这个人就显得博学。如果脑子处理知识的速度很高,那么这个人就显 得聪明。数据库设计的主要挑战是“高速处理大容量的数据”。
u 模块如同人的器官。每个器官都具有特定的功能,器官们依附在骨架上。模块是软件系统的部件 ,它们安插在体系结构上(否则运行起来掉光光了)。在设计模块时要重视功能独立性,还要追 求“高内聚、低耦合” 。
Page 6
2. 体系结构设计
2.1 体系结构设计原则
u 中国科学院的杨叔子院子如是言: – 文学中有科学,音乐中有数学,漫画中有现代数学的拓扑学。漫画家可以“几笔”就把一 个人画出来,不管怎么美化或丑化,就是活像。为什么?因为那“几笔”不是别的,而是 拓扑学中的特征不变量,这是事物最本质的东西。 – 体系结构是指软件系统的基本和主体的形态,也就是软件系统中“最本质”的东西。一个 软件系统的体系结构设计得好不好,可以用“合适性、结构稳定性、可扩展性、可复用性 ”这些特征量来评估。
u 模式就是一种公式化的表现,究竟公式化是不是好事?(蔡学庸精辟的解释) u 尽管软件技术发展非常快,但是仍然有非常多的设计模式可以让我们套用,包括体系结构模式、
数据结构模式、接口模式等。 u 小结:设计模式的应用价值在于它能帮助人们简便地复用以前成功的设计方案。设计模式不是凭
空产生Байду номын сангаас,只有对应用域问题及其解决方案进行抽象和分析,发现本质,并按照一定的格式记录 下来,才能成为可以被人们复用的设计模式。
u “四人帮”这本书的主要贡献是:确立了设计模式这个术语,创导了一种新的面向对象设计思潮 。该书出版后,全世界参与设计模式研究的人数呈爆炸性地增长。该书的负面效应是:这本书深 奥无比,读者被分成两类,即“看得懂设计模式的”和“看不懂设计模式的”,后者居多。很多 人刚入门时就被吓住了,知难而退。
u 何为“模式”和“设计模式” ?模式描述了在我们周围不断重复发生的问题,以及该问题的解决 方案的核心,这样你就能一次又一次地使用该解决方案而不必重复劳动。
u 1995年,Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides(戏称“四人帮”)出版了 Design Patterns: Elements of Reusable Object-Oriented Software,该书的中译本已于2000年出版 .
u 体系结构如同人的骨架。如果某个家伙的骨架是猴子,那么无论怎样喂养和美容,这家伙始终都 是猴子,不会成为人。人的身材大小取决于骨架大小,天生小个子的人基本上不可能成为威猛的 大汉,后天再努力(例如锻炼和吃喝)也白搭。由此可见,体系结构乃是系统设计的重中之重。
u 用户界面如同人的外表,最容易让人一见钟情或一见恶心。象人类追求心灵美和外表美那样,软 件系统也追求(内在的)功能强大和(外表的)界面友好。我们在设计软件时不要沉迷于技术, 而要多多思考什么样的界面才能让用户更加喜欢。
u 合适性:即体系结构是否适合于软件的“功能性需求”和“非功能性需求”。 – 设计师可以充分发挥主观能动性,根据需求的特征,通过推理和归纳的方法设计出合适的 体系结构。经验不丰富的设计师往往把注意力集中在“功能性需求”而疏忽了“非功能性 需求”,殊不知后者恰恰是最能体现设计水平的地方。 – 高水平的设计师高就高在“设计出恰好满足客户需求的软件,并且使开发方和客户方获取 最大的利益,而不是不惜代价设计出最先进的软件。(以设计住宅为例)… – 对于软件系统而言,能够满足需求的设计方案可能有很多种,究竟该选哪一种?此时商业 目标是决策依据,即选择能够为开发方和客户方带来最大利益的那个设计方案。大部分软 件开发人员天生有使用新技术的倾向,而这种倾向对开发商业产品而言可能是不利的,切 记切记。
1. 软件设计基本概念
1.3 漫谈设计模式
u 20世纪90年代,面向对象(Object-Oriented)方法与技术在国内软件业界十分火爆,人们热衷于 谈论“对象”并引以为荣。十多年来,人们发表、出版了无数的文章和书籍。现在,该写的似乎 都写完了,没有新花样玩了,真是一片无聊。设计模式(Design Pattern)及时问世,面向对象爱 好者们终于有了新的追求。
u 数据结构与算法如同人的神经和肌肉,它分布在全身,让器官具有生命并能发挥功能。人之所以 能够全身运动,那是无数的神经和肌肉在起作用。如果局部的神经和肌肉失效了,那么会导致对 应的器官残废。如果全局的神经和肌肉失效了,那么人就瘫痪了。同理,数据结构与算法也有全 局和局部之分,都要慎重设计。
Page 5
u 设计的好坏在根本上决定了软件的优劣。我们可以断言“差的系统设计必定产生差的软件系统” ,但是不能保证“好的系统设计必定产生好的软件系统”。因为在设计之前有需求开发工作,在 设计之后还有编程、测试和维护工作,无论哪个环节出了差错,都会把好事搞砸了。 – 据说上帝把所有的女士都设计成天使,可是天使们在下凡的时候,有些人双脚先着地,有 些人脸先着地。上帝的这一疏忽让很多女士伤透了心。所以我们在开发软件时,一定要吸 取这个教训。
u 著名3D游戏软件Quake设计师Michael Abrash 的总结:“所有真正杰出的设计一旦被设计好,看起 来都是那么的简单和显而易见。但是在获得杰出设计的过程中,需要付出令人难以置信的努力。 ”
Page 3
1. 软件设计基本概念
系统设计过程示意图
Page 4
1. 软件设计基本概念
1.2 软件系统与人体的比喻
u 软件设计之源是软件需求,包括“功能性需求”与“非功能性需求”。设计的目标就是使所设计 的系统能够被开发方顺利地实现,并且恰如其分地满足用户的需求,使开发方和用户的利益极大 化。开发人员不万不能偏离需求,为了追求技术的先进性而开展系统设计工作。
u 依据“分而治之”的思想,我们把系统设计过程划分为两个阶段:高层设计阶段和详细设计阶段 。高层设计阶段的重点是系统结构设计。详细设计阶段的重点是用户界面设计、数据库设计、模 块设计、数据结构与算法设计等。
上海漫索计算机科技有限公司
软件设计
—— 帮助你从程序员上升为设计师 —— 搞清楚设计什么以及如何设计
目录
1. 软件设计基本概念 2. 体系结构设计 3. 用户界面设计 4. 数据库设计 5. 模块设计 6. 数据结构与算法设计 7. 小结
Page 2
1. 软件设计基本概念
1.1 基本概念
u 设计师与程序员的地位。软件设计的技术难度要比编程、测试的高。所以程序员、测试员称为“ 员”,而设计师尊称为“师”。
u 数据库是存储和处理数据用的。人体的数据库是大脑,知识相当于数据,全存在大脑里。如果脑 子里存储的知识很多,那么这个人就显得博学。如果脑子处理知识的速度很高,那么这个人就显 得聪明。数据库设计的主要挑战是“高速处理大容量的数据”。
u 模块如同人的器官。每个器官都具有特定的功能,器官们依附在骨架上。模块是软件系统的部件 ,它们安插在体系结构上(否则运行起来掉光光了)。在设计模块时要重视功能独立性,还要追 求“高内聚、低耦合” 。
Page 6
2. 体系结构设计
2.1 体系结构设计原则
u 中国科学院的杨叔子院子如是言: – 文学中有科学,音乐中有数学,漫画中有现代数学的拓扑学。漫画家可以“几笔”就把一 个人画出来,不管怎么美化或丑化,就是活像。为什么?因为那“几笔”不是别的,而是 拓扑学中的特征不变量,这是事物最本质的东西。 – 体系结构是指软件系统的基本和主体的形态,也就是软件系统中“最本质”的东西。一个 软件系统的体系结构设计得好不好,可以用“合适性、结构稳定性、可扩展性、可复用性 ”这些特征量来评估。
u 模式就是一种公式化的表现,究竟公式化是不是好事?(蔡学庸精辟的解释) u 尽管软件技术发展非常快,但是仍然有非常多的设计模式可以让我们套用,包括体系结构模式、
数据结构模式、接口模式等。 u 小结:设计模式的应用价值在于它能帮助人们简便地复用以前成功的设计方案。设计模式不是凭
空产生Байду номын сангаас,只有对应用域问题及其解决方案进行抽象和分析,发现本质,并按照一定的格式记录 下来,才能成为可以被人们复用的设计模式。
u “四人帮”这本书的主要贡献是:确立了设计模式这个术语,创导了一种新的面向对象设计思潮 。该书出版后,全世界参与设计模式研究的人数呈爆炸性地增长。该书的负面效应是:这本书深 奥无比,读者被分成两类,即“看得懂设计模式的”和“看不懂设计模式的”,后者居多。很多 人刚入门时就被吓住了,知难而退。
u 何为“模式”和“设计模式” ?模式描述了在我们周围不断重复发生的问题,以及该问题的解决 方案的核心,这样你就能一次又一次地使用该解决方案而不必重复劳动。
u 1995年,Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides(戏称“四人帮”)出版了 Design Patterns: Elements of Reusable Object-Oriented Software,该书的中译本已于2000年出版 .
u 体系结构如同人的骨架。如果某个家伙的骨架是猴子,那么无论怎样喂养和美容,这家伙始终都 是猴子,不会成为人。人的身材大小取决于骨架大小,天生小个子的人基本上不可能成为威猛的 大汉,后天再努力(例如锻炼和吃喝)也白搭。由此可见,体系结构乃是系统设计的重中之重。
u 用户界面如同人的外表,最容易让人一见钟情或一见恶心。象人类追求心灵美和外表美那样,软 件系统也追求(内在的)功能强大和(外表的)界面友好。我们在设计软件时不要沉迷于技术, 而要多多思考什么样的界面才能让用户更加喜欢。
u 合适性:即体系结构是否适合于软件的“功能性需求”和“非功能性需求”。 – 设计师可以充分发挥主观能动性,根据需求的特征,通过推理和归纳的方法设计出合适的 体系结构。经验不丰富的设计师往往把注意力集中在“功能性需求”而疏忽了“非功能性 需求”,殊不知后者恰恰是最能体现设计水平的地方。 – 高水平的设计师高就高在“设计出恰好满足客户需求的软件,并且使开发方和客户方获取 最大的利益,而不是不惜代价设计出最先进的软件。(以设计住宅为例)… – 对于软件系统而言,能够满足需求的设计方案可能有很多种,究竟该选哪一种?此时商业 目标是决策依据,即选择能够为开发方和客户方带来最大利益的那个设计方案。大部分软 件开发人员天生有使用新技术的倾向,而这种倾向对开发商业产品而言可能是不利的,切 记切记。