正在加载图片...
方式去折衷,不再下苦功去做有意义的优化。所以我们有必要为折衷制定严正的立场:在保 证其它因素不差的前提下,使某些因素变得更好。 下面让我们用“优化——折衷”的策略解决“鱼和熊掌不可得兼”的难题。 问题提出:假设鱼每千克10元,熊掌每千克一万元。有个倔脾气的人只有20元钱,非 得要吃上一公斤美妙的“熊掌烧鱼”,怎么办? 解决方案:化9元9角9分钱买999克鱼肉,化10元钱买1克熊掌肉,可做一道“熊 掌戏鱼”菜。剩下的那一分钱还可建立奖励基金 1.3一些不正确的观念 本节例举并分析一些不正确的软件工程观念,可帮助初学者少犯相似的错误 观念之一:我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们 解决软件开发中遇到的任何问题。 客观情况:好的参考书无疑能指导我们的工作。充分利用书籍中的方法、技术和技巧,可以 有效地解决软件开发中大量常见的问题。但实践者并不能因此依赖于书籍,这是因为:(1) 现实的工作中,由于条件千差万别,即使是相当成熟的软件工程规范,常常也无法套用。(2) 软件技术日新月异,没有哪一种软件标准能长盛不衰。祖传秘方在某些领域很吃香,而在软 件领域则意味着落后。 观念之二:我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。 客观情况:良好的开发环境只是产出成果的必要条件,而不是充分条件。如果拥有好环境的 是一群庸人,难保他们不干出南辕北辙的事情 观念之三:如果我们落后于计划,可以增加更多的程序员来解决。 客观情况:软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的项目 增添新手,可能会更加延误项目。因为:(1)新手会产生很多新的错误,使项目混乱。(2) 老手向新手解释工作以及交流思想都要花费时间,使实际开发时间更少。所以科学的项目计 划很重要,不在乎计划能提前多少,重在恰如其分。如果用“大跃进”的方式奔向共产主义, 只会产生倒退的后果。 观念之四ε既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的, 随时可以修改 客观情况:对需求把握得越准确,软件的修修补补就越少。有些需求在一开始时很难确定 在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大,就跟治病 样道理 14一些有争议的观念 本节探讨一些有争议的观念,目的不在于得出“正确”或“错误”的评断,而在于争议 会激发更多理性的思考。 争议之一:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?方式去折衷,不再下苦功去做有意义的优化。所以我们有必要为折衷制定严正的立场:在保 证其它因素不差的前提下,使某些因素变得更好。 下面让我们用“优化——折衷”的策略解决“鱼和熊掌不可得兼”的难题。 问题提出:假设鱼每千克 10 元,熊掌每千克一万元。有个倔脾气的人只有 20 元钱,非 得要吃上一公斤美妙的“熊掌烧鱼”,怎么办? 解决方案:化 9 元 9 角 9 分钱买 999 克鱼肉,化 10 元钱买 1 克熊掌肉,可做一道“熊 掌戏鱼”菜。剩下的那一分钱还可建立奖励基金。 1.3 一些不正确的观念 本节例举并分析一些不正确的软件工程观念,可帮助初学者少犯相似的错误。 观念之一:我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们 解决软件开发中遇到的任何问题。 客观情况:好的参考书无疑能指导我们的工作。充分利用书籍中的方法、技术和技巧,可以 有效地解决软件开发中大量常见的问题。但实践者并不能因此依赖于书籍,这是因为:(1) 现实的工作中,由于条件千差万别,即使是相当成熟的软件工程规范,常常也无法套用。(2) 软件技术日新月异,没有哪一种软件标准能长盛不衰。祖传秘方在某些领域很吃香,而在软 件领域则意味着落后。 观念之二:我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。 客观情况:良好的开发环境只是产出成果的必要条件,而不是充分条件。如果拥有好环境的 是一群庸人,难保他们不干出南辕北辙的事情。 观念之三:如果我们落后于计划,可以增加更多的程序员来解决。 客观情况:软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的项目 增添新手,可能会更加延误项目。因为:(1)新手会产生很多新的错误,使项目混乱。(2) 老手向新手解释工作以及交流思想都要花费时间,使实际开发时间更少。所以科学的项目计 划很重要,不在乎计划能提前多少,重在恰如其分。如果用“大跃进”的方式奔向共产主义, 只会产生倒退的后果。 观念之四:既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的, 随时可以修改。 客观情况:对需求把握得越准确,软件的修修补补就越少。有些需求在一开始时很难确定, 在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大,就跟治病一 样道理。 1.4 一些有争议的观念 本节探讨一些有争议的观念,目的不在于得出“正确”或“错误”的评断,而在于争议 会激发更多理性的思考。 争议之一:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有