正在加载图片...
122分而治之 分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。这种朴素的 思想来源于人们生活与工作的经验,完全适合于技术领域。软件人员在执行分而治之的时候, 应该着重考虑:复杂问题分解后,每个问题能否用程序实现?所有程序最终能否集成为一个 软件系统并有效解决原始的复杂问题? 解决原始问题 被件之 复杂问题 系统 子问题1 程序1 分解 子问题2 程序2 子问题n 程序n 图1.6软件领域的分而治之策略 图1.6表示了软件领域的分而治之策略。诸如软件的体系结构设计、模块化设计都是分 而治之的具体表现。软件的分而治之不可以“硬分硬治”。不像为了吃一个西瓜或是一只鸡, 挥刀斩成n块,再把每块塞进嘴里粉碎搅拌,然后交由胃肠来消化吸收,象征复杂问题的西 瓜或是鸡也就此消失了。 123优化—折衷 软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用率 使用户界面更加友好,使三维图形的真实感更强等等。想做好优化工作,首先要让开发人员 都有正确的认识:优化工作不是可有可无的事情,而是必须要做的事情。当优化工作成为 种责任时,程序员才会不断改进软件中的算法,数据结构和程序组织,从而提高软件质量。 著名的3D游戏软件 Quake,能够在PC机上实时地绘制高度真实感的复杂场景。 Quake 的开发者能把很多成熟的图形技术发挥到极致,例如把 Bresenham画线、多边形裁剪、树遍 历等算法的速度提高近一个数量级。我第一次看到 Quake时不仅感到震动,而且深受打击。 这个PC游戏软件的技术水平己经远胜于我所见识到的国内领先的图形学相关科研成果。这 对我们日益盛行的点到完止的研发工作真是莫大的讽刺。所以当我们开发的软件表现出很多 不可救药的病症时,不要怨机器差。真的是我们自己没有把工作做好,写不好字却嫌笔钝。 就假设我们经过思想教育后,精神抖擞,随时准备为优化工作干上六天七夜。但愿意做 并不意味着就能把事情做好。优化工作的复杂之处是很多目标存在千丝万缕的关系,可谓数 不清理还乱。当不能够使所有的目标都得到优化时,就需要“折衷”策略。 软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。就象党支部副书 记扮演和事佬的角色:“…为了使整个组织具有最好的战斗力,我们要重用几个人,照顾 些人,在万不得已的情况下委屈一批人”。 软件折衷的重要原则是不能使某一方损失关键的职能,更不可以象“舍鱼而取熊掌”那 样抛弃一方。例如3D动画软件的瓶颈通常是速度,但如果为了提高速度而在程序中取消光 照明计算,那么场景就会丧失真实感,3D动画也就不再有意义了(如果人类全是色盲,计 算机图形学将变得异常简单)。 人都有惰性,如果允许滥用折衷的话,那么一当碰到困难,人们就会用拆东墙补西墙的1.2.2 分而治之 分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。这种朴素的 思想来源于人们生活与工作的经验,完全适合于技术领域。软件人员在执行分而治之的时候, 应该着重考虑:复杂问题分解后,每个问题能否用程序实现?所有程序最终能否集成为一个 软件系统并有效解决原始的复杂问题? 解决原始问题 分解 集成 复杂问题 子问题 1 子问题 2 子问题 n 程序 1 程序 2 程序 n 软件 系统 图 1.6 软件领域的分而治之策略 图 1.6 表示了软件领域的分而治之策略。诸如软件的体系结构设计、模块化设计都是分 而治之的具体表现。软件的分而治之不可以“硬分硬治”。不像为了吃一个西瓜或是一只鸡, 挥刀斩成 n 块,再把每块塞进嘴里粉碎搅拌,然后交由胃肠来消化吸收,象征复杂问题的西 瓜或是鸡也就此消失了。 1.2.3 优化——折衷 软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用率, 使用户界面更加友好,使三维图形的真实感更强等等。想做好优化工作,首先要让开发人员 都有正确的认识:优化工作不是可有可无的事情,而是必须要做的事情。当优化工作成为一 种责任时,程序员才会不断改进软件中的算法,数据结构和程序组织,从而提高软件质量。 著名的 3D 游戏软件 Quake,能够在 PC 机上实时地绘制高度真实感的复杂场景。Quake 的开发者能把很多成熟的图形技术发挥到极致,例如把 Bresenham 画线、多边形裁剪、树遍 历等算法的速度提高近一个数量级。我第一次看到 Quake 时不仅感到震动,而且深受打击。 这个 PC 游戏软件的技术水平已经远胜于我所见识到的国内领先的图形学相关科研成果。这 对我们日益盛行的点到完止的研发工作真是莫大的讽刺。所以当我们开发的软件表现出很多 不可救药的病症时,不要怨机器差。真的是我们自己没有把工作做好,写不好字却嫌笔钝。 就假设我们经过思想教育后,精神抖擞,随时准备为优化工作干上六天七夜。但愿意做 并不意味着就能把事情做好。优化工作的复杂之处是很多目标存在千丝万缕的关系,可谓数 不清理还乱。当不能够使所有的目标都得到优化时,就需要“折衷”策略。 软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。就象党支部副书 记扮演和事佬的角色:“…为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一 些人,在万不得已的情况下委屈一批人”。 软件折衷的重要原则是不能使某一方损失关键的职能,更不可以象“舍鱼而取熊掌”那 样抛弃一方。例如 3D 动画软件的瓶颈通常是速度,但如果为了提高速度而在程序中取消光 照明计算,那么场景就会丧失真实感,3D 动画也就不再有意义了(如果人类全是色盲,计 算机图形学将变得异常简单)。 人都有惰性,如果允许滥用折衷的话,那么一当碰到困难,人们就会用拆东墙补西墙的
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有